마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

2019 수업 노트

2019-1학기 수업 노트 (자료구조 1, 2019.03.08.)

동동매니저 2019. 3. 9. 15:09

「2019학년도 1학기」 ///

by. 동동매니저 >_<


일자 : 2019년 03월 08일 (금)

과목 : 자료구조 1

담당 교수님 : SCH 컴소공 홍민 교수님


이번 수업의 핵심 키워드!!

파일 입출력


수업 내용을 요약해보면?

☆ Quiz!!

0.1mm 두깨의 종이를 접어서 약 40만km 떨어진 달까지 가려면, (이론상) 접어야 하는 최소 횟수는?

(정답은 느낀 점에서 설명할게요~!)


☆ C언어의 파일 입출력

▶ FILE 구조체를 사용 및 선언

FILE *fp;

▶ 파일 열기

fp=fopen("파일명","모드");

▶ 파일명 기입 방법!!

– 절대 경로 : "C:\\Temp\\data.txt" (반드시 역슬래시 2개로 작성!!)

– 상대 경로 : "data.txt" (파일 위치를 기준으로 상대적인 위치)

▶ 파일 열기 모드

– "r" : 읽기 전용으로 열기, 파일이 없으면 NULL을 반환

– "w" : 쓰기 전용으로 열기, 파일이 없으면 새로 생성, 있으면 다시 생성

– "a" : 추가 모드로 열기, 파일이 없으면 새로 생성

– "r+" : 읽고 쓰기 모드, 파일이 없으면 NULL을 반환

– "w+" : 읽고 쓰기 모드, 파일이 없으면 새로 생성

– "a+" : 읽고 추가 모드, 파일이 없으면 새로 생성

▶ 파일 닫기

fclose(fp);

▶ 파일의 끝인지 알아내기!!

int feof(FILE *stream);

– 파일의 끝이면 0이 아닌 수, 파일의 끝이면 0을 반환

▶ 파일 입출력 함수

int fscanf(FILE *stream, const char *format [, arguments]...);
int fprintf(FILE *stream, const char *format [, arguments]...);

– scanf, printf 함수와 비슷합니다.


수업을 듣고 나서 느낀 점!!

교수님께서 내신 문제에 대해 몇몇 학생들은 100번, 200번 등의 많은(?) 횟수를 말했다.

하지만, 나는 잠시 생각에 잠겼고, 42번이라고 답을 했다. 그러자, 교수님께서도 놀라셨던 것 같았다.

그 이유는, 40만km = 4억m = 4,000억mm이고, 0.1mm에서 4,000억mm로 만들기 위해서는 두께가 약 4조배가 되어야 한다.

종이를 한 번 접을 때 마다 두께는 2배가 되므로, 근본적으로는 '2를 몇 번 곱하면 4조가 될까?'라는 문제가 된다.

(즉, 2n = 4조를 넘어가는 n의 최솟값을 구하는 문제겠죠?)

210 = 1,024

220 = 1,048,576

230 = 약 10.7억

240 = 약 1.1조

242 = 약 4.4조이므로,

(실제로는 불가능하겠지만...) 42번을 접게 되면 약 44만km가 된다.

이렇게 2의 제곱이 큰 결과를 만들게 될 줄은 몰랐다.

나중에 배우게 되겠지만, 팩토리얼의 경우, 이보다 기하급수적으로 늘어나게 된다고 한다.

(효율적인 알고리즘 작성 또한 중요하다고 생각되는 계기가 된 듯?)

또한, 작년 C언어 강의 때 교수님께서 생략하신 기초적인 파일 입출력을 배우게 되었다.

(예전에 책에서 봤던 기억이 가물가물...)


기타 참고 사항!!

드디어... 첫 과제가 주어졌음. (제출 기한 : 2019.03.15.)

얼핏 보면 단순할 것 같지만, 만만치 않았음.

교수님께서 원하시는 형식이 있었고, 직접 데이터를 만들어서 테스트도 해 보라고 권하셨음.

(나중에 과제 목록도 올려보고 싶지만... 아직 교수님께 양해를 구하지 못한 이유로 올려드리는 것은 아직 무리일 것 같아요 ㅠ.ㅠ)

과제를 제출할 때, 프로젝트 폴더를 통째로 압축해서 올리라고 하셨음.

단, 반드시 Visual Studio 2010을 사용할 것!!