목록2024/02 (30)
사이먼's 코딩노트
[Linked List] 문제 하나를 통해 링크드리스트에 대해서 살펴봅시다. 문제의 목표는 구조체로 선언된 사람들을 서로 연결하여 하나의 리스트로 만들고 반복문으로 순회하는 프로그램을 구현하는 것입니다. 문제 접근법은 아래의 여러가지 절차로 나눠 진행할 수 있습니다. 1단계 : 사람 구조체 생성 (개인의 구성요소는 이름, 나이, 사람의 위치) 2단계 : 사람 3명 생성 (구조체 변수 선언) 3단계 : 사람 3명 세팅 (이름, 나이, 위치 지정) 4단계 : 1번째 사람이 2번째 사람의 위치를 기억하고 2번째 사람이 3번째 사람의 위치를 기억 5단계 : 3번째 사람의 위치에는 NULL을 저장 6단계 : 반복문을 통해 3명의 이름과 나이를 출력 7단계 : 현재 작업중인 사람의 위치 변수에 NULL이 나올때 까..
이번에는 여지껏 배운 구조체와 동적할당에 관한 문제를 풀어봅시다. 문제는 다음과 같습니다. 사용자는 사람의 수, 해당 사람의 이름과 나이를 입력하고 입력받은 만큼 저장하여 각 사람의 이름과 나이를 출력한다. 우리는 총 3가지의 버전으로 해당 프로그램을 구현해봅시다. 프로그램 실행 시 출력문의 예시는 아래와 같습니다. 사람의 숫자를 입력해주세요. : 3[엔터] 1번째 사람의 이름을 입력해주세요 : aa[엔터] 1번째 사람의 나이를 입력해주세요 : 33[엔터] 2번째 사람의 이름을 입력해주세요 : bb[엔터] 2번째 사람의 나이를 입력해주세요 : 50[엔터] 3번째 사람의 이름을 입력해주세요 : cc[엔터] 3번째 사람의 나이를 입력해주세요 : 42[엔터] 1번째 사람의 이름, 나이 : aa, 33세 2번째..
[게시판 제작 ~ing]작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03 GitHub - psm817/full_stack_proj_2024_03Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.github.com [회원가입 기능 추가]다음은 "member join" 이라는 명령어를 통해 회원가입 기능을 추가해봅시다.회원가입 기능은 아이디 중복확인, 비밀번호 확인 기능이 포함되도록 구현해봅시다.class Mem { int id; String regDate..
[게시판 제작 ~ing]작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03 GitHub - psm817/full_stack_proj_2024_03Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.github.com [중복되는 코드 메서드로 묶어 제거하기]Article foundArticle = null;for(int i = 0; i 위 코드와 같이 현재까지 구현된 코드를 보면 "article detail", "article modify", "article delet..
[게시판 제작 ~ing]작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.게시판 제작(4) 까지는 기본 게시판의 구조를 만들어보았다면, 이제부터는 보다 더 디테일한 부분들을 추가 및 수정할 예정입니다.리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03 GitHub - psm817/full_stack_proj_2024_03Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.github.com [게시물 리스팅 시 조회수 추가]게시판에서 "article list" 명령어를 통해 게시물을 리스팅했을 때 조회수를 볼 수 있도..
[게시판 제작 ~ing]작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03 GitHub - psm817/full_stack_proj_2024_03Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.github.com [게시물 삭제 기능 구현]게시물의 상세보기 기능을 구현했다면 이번에는 "article delete 고유번호" 명령어를 통해 원하는 고유 번호의 게시물을 삭제할 수 있도록 만들어보자.아래 코드는 기존 작성된 코드 중 Main 메서드의 무한루프 안에 작성하였..
[게시판 제작 ~ing]작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03 GitHub - psm817/full_stack_proj_2024_03Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.github.com [게시물 상세보기 기능 구현]게시물을 고유 번호에 따라 리스트에 저장했다면 이번에는 "article detail 고유번호" 명령어를 통해 원하는 고유 번호 게시물의 상세내용을 볼 수 있도록 만들어보자.아래 코드는 기존 작성된 코드 중 Main 메서드의 무..
[게시판 제작 ~ing]작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03 GitHub - psm817/full_stack_proj_2024_03Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.github.com [작성된 게시물 리스트에 저장]게시물이 정확히 몇 개인지 알 수 없고, 작성한 수 만큼 게시물의 개수가 늘어나기 때문에 우리는 ArrayList()를 활용하여 게시물의 고유 번호에 따라 리스트에 저장해야한다.현재 게시물은 'article write' 명령..
이번 시간에는 메모리를 효율적으로 사용하지 위해서 할당에 대해서 배워봅시다. [정적 할당] #include int main(){ int arr[5]; arr[0] = 1; arr[1] = 3; arr[2] = 5; arr[3] = 7; arr[4] = 9; } 위 코드는 최초에 arr 배열을 5칸으로 지정하여 선언하였다. 해당 프로그램이 실행되면 자동으로 메모리가 스택 지역에서 할당되며, 크기는 총 28바이트를 가진다. 스택 지역은 지금과 같이 사용자가 배정한 칸 수 만큼 고정된 구역만 할당받을 수 있다. 정적 할당의 단점은 프로그램 실행 중에도 배열의 공간을 변경할 수 없다. 또한 필요한 메모리 양을 잘못 계산해서 크게 할당받으면 메모리 낭비가 생긴다. 정적 할당의 장점은 프로그램 시작과 동시에 자동으..
[구조체] 구조체(structure type)란 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이다. 구조체는 기본 타입(char, int, double, float 등)으로 나타낼 수 없는 복잡한 데이터를 표현할 수 있다. 배열이 같은 타입의 변수 집합이라고 한다면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것이다. 간단하게 말해 구조체는 하나의 설계도를 의미한다고 생각하면 된다. 아래는 구조체를 사용하기 전 통상적으로 우리가 사용하는 코드이다. #include "stdio.h" void introduce(int age, char* name, char* hometown, char* favorite_food, char* hobby); void talk(in..