Algorithm/C++ - BOJ

BOJ/백준 - 1436 영화감독 숌

ㅇㅇ잉 2021. 6. 22. 11:07

문제 이해를 잘 못해서 도움을 받은 문제..

 

연속된 666을 찾으면 되는건데, N번째로 작은 종말의 숫자와 같다. 작은!!!!!

그래서

666

1666

2666

.

.

5666

6666 <이 아니고 6660이다.

 

브루트포스 문제니까 그냥 하나씩 증가시켜가면서 만족하는지 보기로 했다.

 

 

cnt가 N이 될 때까지 반복한다.

가장 작은 종말의 숫자가 666이므로 while문은 tmp>=666까지만 반복하며,

종말의 숫자를 만족하면 cnt를 증가시키고, 아니면 1의 자리를 하나씩 지우는 식.

 

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
#include <iostream>
using namespace std;
 
int main() {
    int N;
    cin >> N;
 
    int result = 665;
    int cnt = 0;
 
    while (cnt!=N) {
        int tmp = ++result;
        while (tmp >= 666) {
            if (tmp % 1000 == 666) {
                ++cnt;
                break;
            }
            tmp /= 10;
        }
    }
 
    cout << result;
 
    return 0;
}
cs