[백준] 1436번 - 영화감독 숌 [Java][C++]
[백준] 1436번 - 영화감독 숌 [Java][C++]
1. 문제 풀이
$6$ 이 적어도 3개 이상 연속으로 포함된 숫자들에 대해 크기 순으로 $N$ 번째 수를 구하는 문제로 $N$ 이 최대 $10,000$ 이라서 브루트 포스로 해결할 수 있다. $665$ 보다 작은 숫자는 어차피 종말의 수가 될 수 없으니 $666$ 부터 종말의 수인지 $1$ 씩 증가시켜보며 $N$ 번째 종말의 수를 찾을 때까지 계속 증가시켜보면 된다. 종말의 수인지 판단은 해당 수를 문자열 타입으로 바꾼 후 "666" 을 포함하는지 여부로 판단했다.
2. 코드
1. 브루트 포스 [Java]
String 의 contains 메서드로 "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 11 | 264 ms | 85800 KB | 471 B |
2. 브루트 포스 [C++]
| 언어 | 시간 | 메모리 | 코드 길이 |
|---|---|---|---|
| C++ 17 | 56 ms | 2020 KB | 330 B |
This post is licensed under CC BY 4.0 by the author.