C언어 3

정글사관학교 34일차 TIL: 구조체(Struct), 동적 메모리 할당(malloc)

Ch.14 구조체(Struct) 배열에 여러 가지 정보를 매번 추가해야 한다고 생각해보자. 예컨대 도서 관리 프로그램을 만든다고 할때, i번째 책에 대한 정보를 저장한다. 책 이름, 저자, 출판사, 대출 횟수를 저장하려면 다음과 같은 i-1번째 순서에 다음과 같이 변수를 입력한다. book_name[i-1], auth_name[i-1], publ_name[i-1], borrow[i-1] 근데 더 적을 것도 없이 객체 개념을 떠올려보면 구조체가 왜 필요한지 생각하게 되는데, 이제까지 배웠던 C의 자료구조인 배열은 하나의 배열에 동일한 형만 담을 수 있다. 예를 들어, int 형 배열이면 int 값만, char 형이면 char만. 그런데 하나의 자료형에 여러 자료형을 담을 수 있다면 어떨까? 예를 들어 ch..

정글사관학교 32일차 TIL: C언어 기초(문자 입력, 포인터)

Ch.4: 문자 입력 받기 scanf: 화면(키보드)으로부터 결과를 받아들이는 입력 함수 (파이썬에서 input에 해당). 출력은 printf. scanf 역시 printf처럼 각 변수의 타입에 따라 입력받는 포맷(%d, %f, %c 등)을 달리 해야 한다. 특이사항: scanf로 double 형 변수를 입력받으려면 %lf로 받아야! printf보다 좀 더 까다로운 점은, printf는 double이나 float 모두 %f로 출력하지만 float은 무조건 %f로 입력받아야 함. 버퍼 오버플로우: 허용된 메모리 이상에 데이터를 집어넣어 발생하는 오류. 보안 상 매우 취약. ex) 최대 1바이트를 차지하는 char형 변수인 ch에 한글을 치면 오류가 난다. printf("char 형 변수 입력: "); sc..

정글사관학교 31일차 TIL: 계단 오르기(#2579), 내리막길(#1520), C언어 기초

드디어 4주 간의 알고리즘 커리큘럼이 끝나는 날. 시원섭섭하다. 드디어 끝나서 후련한 마음 반, 지금부터 본격적으로 빡센 일정인 C언어 기반 커리큘럼이 다가왔다는 사실에 두려움 반. 하지만 그 알고리즘마저 해낸 마당에, 앞으로도 지금처럼 꾸역꾸역 하면 어떻게든 하겠지. 알고리즘 커리는 오늘로 끝이지만 앞으로 매일 한 문제씩 꼬박꼬박 풀 예정. 꾸준히 리뷰해야겠다. 이제 알고리즘 풀이 리뷰는 따로 카테고리를 만들어서 올릴 예정. 1. 계단 오르기(#2579) 마침 어제 풀었던 문제가 시험에 나와서 아주 기분 좋게 풀었더랬다. dp를 처음 계단을 오를 때 기점으로 생각하는 게 아니라 n번째 계단에 도착했을 때를 기점으로 거꾸로 생각하면 훨씬 간단하게 풀 수 있다. 아래 그림을 보자. n번째 계단에 도착하는 ..