💡 브루트포스 알고리즘
Memory 1112KB Time 260ms Code Length 493B
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
int main() {
int n;
int result = 0;
scanf("%d", &n);
int cnt = 0;
for (int i = 666; ; i++) {
int tmp = i;
int arr[1000] = {0};
int k = 0;
while (tmp / 10) {
arr[k++] = tmp % 10;
tmp = tmp / 10;
}
arr[k] = tmp;
int flag = 0;
for (int x = 0; x <= k-2; x++) {
if (arr[x] == 6 && arr[x + 1] == 6 && arr[x + 2] == 6) {
flag = 1;
break;
}
}
if (flag) cnt++;
if (cnt == n) {
result = i;
break;
}
}
printf("%d", result);
}
이 코드는 입력으로 정수 n을 받아들이고, n번째로 작은 ‘666’이 포함된 수를 찾아 출력하는 프로그램이다. 먼저, 무한 루프를 돌면서 i를 666부터 1씩 증가시키며 수를 확인한다. 각 수를 분해하여 각 자리 숫자를 배열에 저장하고, 연속된 세 개의 숫자가 6인지 확인한다. 만약 666이 포함된 수를 찾으면 cnt를 증가시키고, cnt가 n과 같아지면 해당 수를 결과로 저장하고 루프를 종료한다. 마지막으로 결과를 출력한다.