전체 글

개발 공부한 것을 정리하고 인생 얘기도 가끔 합니다
자료구조 강의

(자료구조 강의) Chapter 03 - 알고리즘 성능 분석

첫 번째 강의에서 순차 탐색 알고리즘과 이진 탐색 알고리즘의 성능을 비교하기 위해 데이터 1,000,000개를 가지고 테스트 했습니다. 데이터를 탐색하는데 걸리는 시간이 바로 나와서 확인하기 편했지만 모든 코드에 테스트 코드를 붙여서 테스트를 하려니 번거롭습니다. 또한 다음과 같은 의문이 들어 정확한 비교, 분석이라고 하기 애매합니다. ❝ 데이터가 1,000,000개가 아니라 10,000,000개 일 때는 얼마나 차이가 나요? ❞ ❝ 탐색 데이터가 배열 첫 번째에 있으면 이진 탐색보다 선형 탐색이 더 빠른 거 아닌가요? ❞ 알고리즘을 정확하게 비교하는 방법 우리는 알고리즘을 비교하고 분석하는 방법 중 하나인 빅-오 표기법을 알아볼겁니다. 다른 방법은 빅-오메가, 빅-세타가 있는데 다음과 같은 특징을 가집..

자료구조 강의

(자료구조 강의) Chapter 02 - 자료구조와 알고리즘의 이해

우리가 지난 강의에서 살펴본 탐색 알고리즘에는 여러 가지가 있습니다. 또한 사용하는 자료구조에 따라 알고리즘이 달라지기도 합니다. 배열도 자료구조 중 하나입니다. 우리는 배열이라는 자료구조를 사용해서 선형 탐색, 이진 탐색 알고리즘을 적용시킨 것이죠. 자료구조는 크게 선형 구조와 비선형 구조로 나눌 수 있습니다. 여기서 배열은 리스트에 들어간다고 보시면 됩니다. 리스트는 선형 리스트와 연결 리스트로 나눌 수 있는데 연결 리스트에 대해서는 다음에 자세히 알아보도록 할게요. 자료구조가 정확히 뭐지? 보통 첫 프로그래밍 언어로 C언어를 선택했다면 그 다음엔 자료구조를 공부하는 분이 많을 겁니다. 저도 그랬습니다. 지난 강의에서도 자료구조 공부의 중요성을 얘기하고 주변에서도 자료구조를 꼭 배워야 한다고 합니다...

자료구조 강의

(자료구조 강의) Chapter 01 - 자료구조를 공부하는 이유

자료구조 꼭 배워야 할까? ❝ 자료구조 몰라도 프로그램 만드는 데 문제 없던데요? ❞ 네 맞아요, 자료구조를 몰라도 프로그램을 만드는 데 문제가 없어요. 어 그럼 안배워도 되냐구요? 나 혼자 쓰는 프로그램이나 처리할 데이터양이 적은 프로그램만 만들거라면 안배워도 됩니다. 하지만 우리는 개발자가 되고 싶은 거고, 기업에 들어가거나 창업을 해서 많은 사람들이 사용하고 싶어하는 프로그램을 만들고 싶잖아요. 기껏 만든 프로그램이 사용자가 한 번에 몰려서 서버가 터져버리거나 간단한 데이터 처리를 하는데 10초 이상이 걸리면 아무도 그 프로그램을 쓰고 싶지 않을거에요. 자료구조와 알고리즘을 적절히 활용하여 프로그램을 만들면 성능을 더 좋게 만들 수 있어요. 얼마나 차이가 나는데? 속도차이가 얼마나 나는지 직접 보면..

C언어 강의

(C언어 강의) Chapter -18 switch문에 의한 선택

이번에 배우는 switch문은 if~else문과 유사합니다. 그래서 if문을 switch문으로 대체할 수도 있지요. 하지만 if~else문에 비해 제한적입니다. 예제를 먼저보고 스스로 분석을 해봅시다. 우리는 이 정도 코드를 분석할 수 있는 능력이 되었으니까요. 실행 결과 1 실행 결과 2 무슨 예제인지는 다들 아시겠죠? 그럼 이제 설명을 해보겠습니다. 그림에서 보이듯이 switch를 통해 전달된 num의 값에 따라 각 case안의 내용을 처리하고 있습니다. 각 케이스 뒤에 있는 숫자는 num을 통해 전달된 값입니다. 그래서 꼭 1부터 시작하지 않아도 되고 꼭 정수여야 할 필요는 없습니다. 그리고 각 case끝에는 세미콜론(;)이 아닌 콜론(:)이므로 이 점 유의하셔야 합니다. 그리고 모든 case의 경..

C언어 강의

(C언어 강의) Chapter -17 조건문 if~else

이번에 배우는 continue문과 break문은 반복문과 관련이 있습니다. break먼저 살펴보겠습니다. break 말 그대로 멈추라는 뜻이죠. break문은 반복문을 탈출할 때 사용하는 키워드로서, 다음처럼 사용합니다. break; 간단하죠? 하지만 반복문을 탈출하려면 조건을 달아야 완벽해집니다. 예제 보겠습니다. 실행결과 입력 한 수 만큼 Hello World!를 출력해주는 예제입니다. while문 안에 if문을 만족하면 break한다는 문장이 있네요.i가 num과 같아지면 반복문을 탈출한다는 뜻입니다. if문을 탈출하는게 아니라 가장 가까이 있는 반복문을 탈출하는 키워드입니다. 이제 continue문에 대해 배워봅시다. continue문도 말 그대로 계속 합니다.무엇을 계속 하느냐? 밑에 소스는 무..

C언어 강의

(C언어 강의) Chapter -16 조건문 if~else

이번에는 else문에 대해 배웁시다.if문은 '만약 ~이라면'의 경우를 표현하는 키워드였다면 '만역 ~이 아니라면' 이라는 키워드도 있겠죠?그게 바로 else문입니다. else문은 if문처럼 혼자 쓰일 수 없고 if와 짝을 이루어야 합니다.즉, if~else문은 하나의 문장입니다 예제 보시죠. 실행 결과 이 처럼 else문은 짝이 되는 if문의 조건이 만족되지 않을 때 실행됩니다. if, else뿐 만이 아니라 else if라는 키워드도 있습니다.이 역시도 혼자 쓰일 수 없으며 if문과 짝을 이루어야 합니다.else if의 의미는 '만약 if문의 조건을 만족하지 않고 이 조건을 만족한다면' 입니다.else if는 else와 달리 if문 처럼 조건을 써줘야 합니다.else if의 개수는 제한이 없습니다. ..

C언어 강의

(C언어 강의) Chapter -15 조건문 if

프로그램을 만들 다 보면 ~한다면 ~실행 ~하지 않다면 ~실행 이런 코드를 작성해야할 때가 무조건 생기는데이런 조건문은 어떻게 넣어주어야 할까요? 우리가 두 개의 정수를 입력받아 사칙연산의 결과를 출력해주는 프로그램을 만든다고 합시다.그럼 3과 4를 입력했다면 +연산, -연산, *연산, /연산을 모두 출력하는 프로그램을 만들것입니다.하지만 여기서 위 4개의 연산 중 하나만 선택하여 연산할 수 있도록 해주는 것이 조건문이지요. if문의 사용법은 간단합니다. if( 조건 ) { ~~내용 } if문 역시 반복문처럼 중괄호 내의 내용이 한 줄이라면 중괄호 생략이 가능합니다. 예제 하나 보겠습니다. 실행 결과 (맨 밑의 문장이 영어로 나오는 이유는 제가 최근에 윈도우를 영문버전으로 바꿔서 그렇습니다.) if문의 ..

C언어 강의

(C언어 강의) Chapter -14 반복명령을 위한 키워드 (for)

이번에는 반복문중에서 가장 많이 사용되는 for문에 대해 알아볼겁니다. for문은 while이나 do~while과 달리 변수의 선언과 거짓 또는 참을 표현할 조건, 조건을 만족시키기 위한 값의 증가 및 감소 연산을 한 자리에 묶을 수 있도록 만들어진 반복문입니다. while문을 통한 Hello World!문장을 3번 출력하는 코드를 일단 제시하면서 반복문에 꼭 필요한 조건 3가지를 알아보겠습니다. int main(void) { int num = 0; //반복을 위한 조건 1. 반복을 위한 변수선언 및 초기화 while (num < 3) //반복을 위한 조건 2. 반복의 조건 { printf("Hello World! \n"); num++; //반복을 위한 조건 3. 반복의 조건을 거짓으로 만들기 위한 연산..

C언어 강의

(C언어 강의) Chapter -13 반복명령을 위한 키워드 (do~while)

이번에는 do~while문을 배울겁니다. do~while문도 while과 같은 반복 키워드인데 이 둘의 차이점은반복의 조건을 검사하는 '위치'입니다.do~while문은 while문과는 다르게 반복조건을 '밑'에서 검사를 하여 반복내용을 최소한 한번 이상 실행합니다. do { printf("Hello World! \n"); num++; } while(num < 3); 위 코드처럼요. 위 코드의 실행과정을 그림으로 나타내면 일반적으로 사람들은 do~while문보다는 while문을 더 많이 사용합니다.하지만 while문보다 do~while문이 더 자연스러운 경우가 있죠.무조건 한 번 이상은 실행해야하는 경우입니다. 예제 봅시다. 실행결과 위 예제는 정수를 입력받아서 result에 입력받은 정수를 더하고 0이 ..

C언어 강의

(C언어 강의) Chapter -12 반복명령을 위한 키워드(while)

드디어 반복문에 대해 배울 차례입니다. C언어에서 제공하는 반복문 키워드는 3가지가 있는데 그 세 가지는 다 비슷하기 때문에 while하나만 잘 이해해도다른 반복문은 금방 이해가 되실겁니다. 반복문이란 무엇일까요?자 예를 들어 "Hello World!"라는 문자열을 총 열 번 출력하고 싶다면 어떻게 해야 할까요?printf함수를 10번 호출하면 됩니다. 하지만 이 방법은 매우 비효율적입니다. 그래서 이런 반복적인 일을 수행해주는 것이 바로 '반복문'입니다. while문의 기본적인 사용법은 다음과 같습니다. 저 반복조건에 무엇이 들어가야 할지 보겠습니다. "반복 조건이 참이냐 거짓이냐?" 예제를 보면서 생각해봅시다. 실행결과 위 코드에서 10번째 줄을 지워봅시다.어떻게 되나요?프로그램이 종료되지 않고 계속..

훈더덕
훈더덕 개발일지