마음만은 새내기

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

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을 사용할 것!!