문제설명
입력 & 출력
나의 풀이
이번 문제는 영화감독 숌은 영화 제목에 '666'이 포함된 숫자를 사용하여 영화 제목을 만들 때 쇼메이 만든 N번째 영화 제목에 사용된 숫자를 구하는 프로그램을 작성하는 문제입니다.
저의 접근 방식은 다음과 같습니다.
- 숫자를 666부터 시작하여 순차적으로 증가시킵니다.
- 각 숫자에 '666'이 포함되어 있는지 검사합니다.
- '666'이 포함된 숫자를 찾을 때마다 카운트를 증가시킵니다.
- N번째로 '666'이 포함된 숫자를 찾으면 그 숫자를 출력합니다.
풀이 설명을 하자면 먼저 빠른 입력을 위해 Buffer를 사용하여 입력을 받아줍니다. 그리고 문제 자체에서 요구하는 사항이 666이 포함된 수를 찾는 것이기 때문에 앞서 접근방식에서 말한 대로 666을 시작 숫자로 지정합니다.
그리고 N번째로 "666"이 포함된 숫자를 찾을 때까지 계속 반복하는 반복문을 지정해주고, 숫자를 계속 증가시켜줍니다.
증가한 숫자를 String.valueOf()와 contains() 메서드를 사용하여 문자열로 변환하고 "666"이 포함되어 있는지 검사합니다. 만약 포함되어 있다면 카운트를 증가시켜 줍니다.
그러면 입력받은 N번째로 "666"이 포함된 숫자를 찾게 된다면 while문을 빠져나와 해당 숫자를 출력하면 됩니다.
문제 자체는 어렵지 않으나 저도 실수한 부분이 있어 정리하고자 합니다.
666, 1666, 2666, 3666... 5666, 그다음 수는 6666이 아닌 "6660"라는 점입니다.
저처럼 단순하게 예제 입력, 1,2,3을 보고 N -1에 666을 붙이면 안 됩니다...
위 결과처럼 N : 7이라면 666, 667, 668, 669, 670처럼 계속 숫자가 증가하고.... "1666",.... "2666",... "3666",..."4666",... "5666",..."5667",...."6660"이 "666"이 포함되는 숫자가 됩니다.
따라서 count가 N보다 작을 때까지만 반복하기 때문에 count가 6일 때 반복문을 나오게 되고, number : 6660이 들어가게 됩니다.
참고❗️
'Coding Test > 백준' 카테고리의 다른 글
[백준] 색종이 (구현, 2차원 배열, BufferReader, 2563번, Java) (1) | 2024.07.16 |
---|---|
[백준] 요세푸스 문제 (큐, Queue, BufferReader, 1158번, Java) (0) | 2024.07.15 |
[백준] 2 x n 타일링 (동적 계획법, DP, 11726번, Java) (0) | 2024.07.13 |
[백준] 수 찾기 (이진 탐색 , Binary Search, Buffer, sort(), 1920번, Java) (0) | 2024.07.09 |
[백준] 미로 탐색 (BFS, Queue, BufferedReader, 2178번, Java) (0) | 2024.07.09 |