[CS50] 알고리즘 - 검색 알고리즘
TIL
검색 알고리즘메모리 구조, 자료형, 배열과 같은 기본 개념을 활용하여 검색과 정렬 문제를 푸는 알고리즘을 배워보자. 주어진 배열에서 특정 값을 찾는 방법부터 알아보자. 배열은 한 자료형의 여러 값이 메모리상에 모여 있는 구조다. 컴퓨터는 배열의 인덱스를 하나씩 접근한다.어떤 값이 배열 안에 있는지 찾으려면 배열이 정렬되어 있는지에 따라 다른 방법을 사용한다.선형 검색배열의 인덱스를 처음부터 끝까지 하나씩 증가시키며 값을 검사한다.For i from 0 to n–1 If i'th element is 50 Return trueReturn false모든 원소를 순서대로 확인하므로 정렬 여부와 관계없이 사용할 수 있다.시간 복잡도: O(n) 이진 검색배열이 정렬되어 있다면..
[CS50] 명령행 인자
TIL
명령행 인자란make나 clang 같은 프로그램을 실행할 때 컴파일할 코드 외에도 파일명 같은 추가 정보를 함께 줄 수 있다. 이런 정보를 명령행 인자라고 부르며, 우리가 작성하는 프로그램에서도 명령행 인자를 받을 수 있다. argc와 argvmain() 안에 void 대신 argc와 argv를 정의해보자.#include #include int main(int argc, string argv[]){ if (argc == 2) { printf("hello, %s\n", argv[1]); } else { printf("hello, world\n"); }}argc (argument count):main 함수가 받는 입력의 개수argv (argument ..
[CS50] 배열 - 문자열의 활용
TIL
문자열 길이 구하기문자열에서 문자를 검색하거나 특정 문자를 바꾸려면 어떻게 해야 할까? 사용자로부터 문자열을 입력받아 한 글자씩 출력하는 프로그램을 만들어보자. for 루프로 문자열의 인덱스를 하나씩 증가시키면 되는데, 문자열의 끝은 어떻게 알 수 있을까?한 가지 방법은 널 종단 문자 \0와 일치하는지 검사하는 것이다.for (int i = 0; s[i] != '\0'; i++){ // ...} 하지만 strlen() 함수를 사용하면 더 효율적이다.#include #include #include int main(void){ string s = get_string("Input: "); printf("Output:\n"); for (int i = 0, n = strlen(s); i st..