본문 바로가기

분류 전체보기407

4: 알고리즘-2(알고리즘 표기법) 알고리즘을 설명하기 위해 특정 표기법을 사용하는 이유(Big-O와 Ω:오메가) - 알고리즘이 얼마나 잘 설계되어 있는지 확인하기 위해 - 코드가 얼마나 잘 구현되었는지 확인하기 위해 - 일반적으로는 Big-O 표기법 사용 n은 일일이 하나씩 다 찾아보는 경우 n/2는 두 칸씩 찾아보는 경우(2,4,6,8...) logn는 이진 탐색처럼 반으로 쪼갠 다음에 거기서부터 비교하는 경우 Big-O 표기법 알고리즘을 수행하는 데 필요한 시간의 상한선을 의미 여기서 대문자 O는 “on the order of”의 약자로, 쉽게 보면 “~만큼의 정도로 커지는”것이라고 볼 수 있음 O(n)은 n만큼 커지는 것이므로 n이 늘어날수록 선형적으로 증가하게 됨. O(n/2)도 결국 n이 매우 커지면 1/2은 큰 의미가 없어지기.. 2021. 11. 29.
4: 알고리즘-1(검색 알고리즘) 배열: 한 자료형안에 여러 값들이 메모리상에 모여 있는 구조 - 컴퓨터는 모든 숫자를 한 번에 파악할 수 없어서 배열의 인덱스 하나하나에 다 접근함 - 어떤 값이 배열 안에 있는지를 찾아보기 위해서는 배열이 정렬되어 있는지 여부에 따라 여러 방법을 사용할 수 있음 선형 검색(Linear Search) 배열의 인덱스를 처음부터 끝까지 하나씩 증가시키면서 방문해 그 값이 속하는지 검사함(처음부터 끝까지 하나씩 순서대로 비교) 의사코드로 아래와 같이 나타낼 수 있음 For i from 0 to n-1 //배열안에 n개의 인덱스가 있고 찾으려는 i요소가 있다. If i'th element if 50 //i요소가 50이라면 return true //True 값 반환 Return false //False값 반환 이.. 2021. 11. 29.
3: 배열-6(명령행 인자:command-line arguments) 명령행 인자: 사용자가 명령행에서 명령을 실행할 때 해당 명령과 함께 지정하는 인자를 의미함 Make나 clang 같은 프로그램 실행 시, 컴파일하려는 코드 외에도 컴파일 후 저장하려는 파일명 등 추가적인 정보를 줄 수 있음(ex. clang -o 같은 것) 명령행 인자를 사용하면 프로그램 실행 후 변수에 값을 저장하는 게 아니라, 프로그램 실행과 동시에 인자가 활용됨 명령행 인자는 자동으로 프로그램의 main 함수에 전달되기 때문에 프로그램 내부의 코드를 사용하지 않고도 데이터를 입력할 수 있음 main도 하나의 함수이다. main() 안에 void라는 인자를 입력하는 대신 int argc, string argv[] 를 정의! #include #include int main(int argc, strin.. 2021. 11. 28.
3: 배열-5(문자열의 활용) 문자열의 길이 및 탐색 사용자로부터 문자열을 입력받아 한 글자씩 출력하는 프로그램을 만들기 For 루프를 통해 문자열의 인덱스를 하나씩 증가시켜가면서 해당하는 문자를 출력하면 됨 #include int main(void) { string s = get_string("Input: "); print("Output: "); for(int i = 0, ???, i++) { printf("%c", s[i]); } print("\n"); } for 루프에서 조건은 문자열의 길이만큼 나와야 함. 그래서 ???조건에서는 i가 문자열의 길이보다 작아야 함 이때 strlen()이라는 함수를 사용할 수 있음! strlen은 문자열의 길이를 알려주는 함수로 라이브러리에 포함되어 있음 를 포함하지 않으면 컴파일할 때 clang.. 2021. 11. 28.
3: 배열-4(문자열과 배열) 문자열(string) 자료형의 데이터 == 문자(char) 자료형의 데이터들의 배열 s는 문자의 배열이기 때문에 메모리 상에 아래 그림과 같이 저장되고, 인덱스로 각 문자에 접근할 수 있음 널 종단 문자(null-terminator): 문자열의 끝을 나타내는 문자로, '\0'라고 정의함 널 종단은 문자열에게 문자열이 끝났고 더 이상의 문자가 남아있지 않다고 말하는 문자 여러 이름이 포함된 names라는 문자열이 선언된 경우 #include #include int main(void) { string names[4]; names[0] = "EMMA"; names[1] = "RODRIGO"; names[2] = "BRIAN"; names[3] = "DAVID"; printf("%s\n", names[0]); .. 2021. 11. 27.
3: 배열-3(메모리와 배열:전역변수) 3. 메모리 c에는 아래와 같은 여러 자료형이 있고, 각각의 자료형은 서로 다른 크기의 메모리를 차지함 bool: 불리언, 1바이트(8비트) char: 문자, 1바이트 int: 정수, 4바이트(32비트) float: 실수, 4바이트 long: (더 큰) 정수, 8바이트(64비트) double: (더 큰) 실수, 8바이트 string: 문자열, ?바이트 사진에서 여러 개의 노란색 사각형이 메모리를 의미하고, 작은 사각형 하나가 1바이트를 의미함 예) char 타입의 변수를 하나 생성하고, 그 값을 입력한다고 하면 한 사각형 안에 그 변수의 값이 저장됨 *string은 선언할 때 " "(큰따옴표로) / char은 ' '(작은따옴표로) 4. 배열 예) 세 개의 점수를 저장하고 그 평균을 출력하는 코드 짜기 #.. 2021. 11. 25.