n번째 영화의 제목은 n번째로 작은 종말의 수라는 말에 유의한다.
이 문제에서 종말의 수란 "666"이 들어가는 n번째로 가장 작은 수이다.
즉 종말의 수는 1666, 2666, ... 6666, 6660, 6661, ... 6669, 7666, ... 순서로 전개된다.
복잡하게 생각하기보다 브루트 포스로 num을 1씩 증가시키면서 숫자에 "666"이 존재하면 카운트를 증가시키며 푸는 것이 편하다.
num을 String으로 변환한 후 indexOf()를 통해 "666" 문자열이 존재하면 카운트를 증가시키는 방법을 사용하였다. indexOf()는 해당 문자가 문자열에 존재하지 않으면 -1을 리턴한다.
import java.io.*;
import java.util.*;
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 num = 1666, cnt = 2;
while (n != 1 && cnt < n) {
num++;
String str = Integer.toString(num);
if (str.indexOf("666") != -1)
cnt++;
}
if (n == 1) System.out.println(666);
else System.out.println(num);
}
}