https://www.acmicpc.net/problem/1436
문제
풀이
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 x = 0;
int count = 666;
while(x < n){
if(String.valueOf(count).contains("666")){
x++;
}
count++;
}
System.out.println(count - 1);
}
}
예제를 먼저 분석해 보자.
2, 3, 6까지는 그러려니 했는데 187을 정확히 분석하는 것이 중요하다.
187인데 66666인 이유를 따져보면 5666까지는 그냥 올라가지만 6660, 6661 이런 식으로 바뀔 수 있기 때문이다.
입력으로 주어진 N이 10000까지이고, 시간제한이 2초이기 때문에 브루트포스를 사용해 봤다. 다만, 단순히 해보고 고치기보다는 상황을 확실히 인지하고 들어가는 것이 좋다고 생각했다.
계산해 보면 6660 같은 변수를 제외하더라도 1000칸이 올라가면 무조건 다음 숫자가 나온다고 볼 수 있다. 그렇다면 최대 계산 횟수는 10000 * 1000 해서 천만이 되고 시간제한에 충분하기 때문에 브루트포스를 도입해도 좋다고 생각해 처리했다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 2559번. 수열 (JAVA) (0) | 2024.03.30 |
---|---|
[백준] 21921번. 블로그 (JAVA) (0) | 2024.03.30 |
[백준] 1149번. RGB거리 (JAVA) (0) | 2024.03.19 |
[백준] 1439번. 뒤집기 (JAVA) (0) | 2024.03.19 |
[백준] 1987번. 알파벳 (JAVA) (0) | 2024.02.14 |