이 문제는 함정만 조심하면 쉽게 풀 수 있다. 아마 정답률이 50%가 안되는 이유가 어려워서라기 보단 함정때문이다.
666이 들어가는 숫자, 즉 6이 연속에서 3번 들어가야 하는데 너무 쉽고 단순하게 생각한다면
1번째 -> 666
2번째 -> 1666
.
.
6번째 -> 5666
7번째 -> 6666
이렇게 생각하게된다. 단순히 N-1에 666을 붙이는 것이 아니고,
6번째인 5666 다음에 7번째로 6660, 8번째로 6661이 나온다는 것을 생각해야한다.
처음에 이 문제가 브루트포스인줄 모르고 풀었다가 오답이 나왔는데 완전탐색방법으로 문제를 해결했다.
import java.util.Scanner;
public class Exam1436 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 몇번째 영화제목?
int number = 0;
while (N > 0) {
number++;
String s = Integer.toString(number);
if (s.contains("666")) {
N--;
}
}
System.out.println(number);
}
}
//2번
import java.util.Scanner;
public class Exam1436_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int cnt = 0;
int num = 0;
while (true) {
num++;
String s = Integer.toString(num);
if (s.contains("666")) {
cnt++;
}
if (cnt == N) {
break;
}
}
System.out.println(num);
}
}
'Algorithm by java' 카테고리의 다른 글
백준 2455번 지능형 기차 java (0) | 2019.08.27 |
---|---|
백준 1018번 체스판 다시 칠하기 java (2) | 2019.08.26 |
백준 7568 덩치 java (0) | 2019.08.16 |
2798 블랙잭 - java (0) | 2019.08.14 |
2231 - 분해합 java (0) | 2019.08.13 |