검색 알고리즘 선형 검색 배열의 인덱스를 처음부터 끝까지 하나씩 증가시키면서 방문하여 그 값이 속하는 지를 검사한다. 이진 검색 만약 배열이 정렬되어 있다면, 배열 중간 인덱스부터 시작하여 찾고자 하는 값과 비교하며 그보다 작은 인덱스 또는 큰 인덱스로 이동을 반복한다. 알고리즘 표기법 Big O는 알고리즘 실행시간의 상한을 나타낸 것이다. O(n)은 on the order of 의 약자로 쉽게 생각하면 ~만큼의 정도로 커지는 것이라고 볼 수 있다. O(n)은 n만큼 거지는 것이므로 n이 늘어날 수록 선형적으로 증가하게 된다. 따라서 logn과 같은 형태가 되어야 좋은 성능을 낸다고 할 수 있겠다. O(n^^2) O(n log n) O(n) -선형검색 O(log n) - 이진 검색 O(1) Big Ω는 ..
전체 글
0부터 시작하는 필중입니다.컴파일링 #include int main(void) { printf("hello, world\n"); } 위와 같은 코드를 살펴보면 printf라는 함수는 괄호 안에 있는 문자열을 출력하는 함수이다. 그리고 이 함수를 출력하기 위해서는 stdio.h라는 라이브러리가 필요하다. (stdio.h는 헤더파일로 C언어로 작성되어 있으며 파일명이 .h로 끝나는 파일이다. 그래서 이후 프로그램을 컴파일하게 되면, 파일 속 들어 있는 printf 함수의 초기 버전으로 하여금 컴퓨터가 알 수 있도록 한다.) 우리는 이전에 clang hello.c 로 컴파일을 하고, ./a.out 명령으로 프로그램을 실행하였다. 만약 a.out 처럼 엉뚱한 이름이 아닌 다른 이름으로 컴파일을 하고 싶다면 clang -o hello he..
🤷♂️문제설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 🙅♀️제한조건 1 ≤ s의 길이 ≤ 50 s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다. return 값이 1 이상 2,000,0..
🤷♂️문제설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 ..
🤷♂️문제설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 🙅♀️제한조건 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다. 💁입출력 예 t p result "3141592" "271" 2 "5002208398..
🤷♂️문제설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함번호 가로길이 세로길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때..