// [백준] 1436. 영화감독 숌 (Kotlin)
fun main() = with(System.`in`.bufferedReader()){
var n = readLine().toInt()
var number = 665
// 666보다 큰 모든 수에 대하여 666 포함여부 n번째 수까지 탐색
while(n!=0){
number++
if(number.toString().contains("666")){
n--
}
}
println(number)
}
일단 666을 포함하는 가장 작은 수는 666이므로
666부터 하나씩 수를 늘려가며 666라는 문자가 포함되어있는지 여부를 전체 탐색해준다.
하지만 모든 수에 대하여 String으로 변환후 contains 으로 포함여부를 확인하는 작업은
매우 시간이 오래걸리게 된다.
다른풀이
// [백준] 1436. 영화감독 숌 (Kotlin)
fun main() = with(System.`in`.bufferedReader()){
var n = readLine().toInt()
var number = 665
// 666보다 큰 모든 수에 대하여 666 포함여부 n번째 수까지 탐색
while(n!=0){
number++
var count = 0
var tmp = number
while(tmp > 0){
// 일의자리부터 이 숫자가 6을 포함하는가?
if(tmp % 10 == 6){
count++
}
// 6이 연속되지 않는다면 0
else count = 0
// 다음 자리 수 비교
tmp/=10
// 6이 3번 연속된다면
if(count == 3) {
n--
}
}
}
println(number)
}