Post

[백준] 1436번 - 영화감독 숌 [Java][C++]

[백준] 1436번 - 영화감독 숌 [Java][C++]

문제 링크


1. 문제 풀이

$6$ 이 적어도 3개 이상 연속으로 포함된 숫자들에 대해 크기 순으로 $N$ 번째 수를 구하는 문제로 $N$ 이 최대 $10,000$ 이라서 브루트 포스로 해결할 수 있다. $665$ 보다 작은 숫자는 어차피 종말의 수가 될 수 없으니 $666$ 부터 종말의 수인지 $1$ 씩 증가시켜보며 $N$ 번째 종말의 수를 찾을 때까지 계속 증가시켜보면 된다. 종말의 수인지 판단은 해당 수를 문자열 타입으로 바꾼 후 "666" 을 포함하는지 여부로 판단했다.


2. 코드

1. 브루트 포스 [Java]

Stringcontains 메서드로 "666" 을 포함하는지 판단했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());

        int n = 666;
        while (true) {
            if (String.valueOf(n).contains("666")) {
                N--;

                if (N == 0) break;
            }
            n++;
        }

        System.out.println(n);
    }
}

2. 브루트 포스 [C++]

find 함수로 "666" 을 포함하는지 판단했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    int x = 666;
    while (true) {
        if (to_string(x).find("666") != string::npos) {
            n--;

            if (n == 0) break;
        }
        x++;
    }

    cout << x;
}

3. 풀이 정보

1. 브루트 포스 [Java]

언어시간메모리코드 길이
Java 11264 ms85800 KB471 B

2. 브루트 포스 [C++]

언어시간메모리코드 길이
C++ 1756 ms2020 KB330 B

This post is licensed under CC BY 4.0 by the author.