728x90
https://www.acmicpc.net/problem/1436
1436번: 영화감독 숌
666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타
www.acmicpc.net
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // N 번째 영화
int title = 666; // 제목은 666부터 시작
String title2 = "";
ArrayList <Integer> six = new ArrayList <>(); // 영화 제목들을 넣을 Arraylist
while(true) {
title2 = Integer.toString(title); // 6이 포함되어있는지 확인을 위해 title을 String형으로 변경
int count = 0;
for(int i=0; i<title2.length()-2; i++) { // 연속으로 6이 3개이상이 있어야함
// 연속으로 6이 3개가 있다면
if(title2.charAt(i) == '6' && title2.charAt(i+1) == '6' && title2.charAt(i+2) == '6') {
six.add(title); // arraylist에 add
count++;
if(count == 1) // arraylist에 제목을 add했다면 중복으로 add하는 것을 방지하기 위해
// (예를 들어 6666이면 666/6 or 6/666 두 번 add 하는것을 방지)
break; // for문 break
}
}
if(six.size()==N) { // 제목이 내가 구해야하는 N번째 영화까지 들어왔다면
System.out.println(six.get(N-1)); // 리스트의 마지막(N번째 영화 제목)을 출력하고 종료
return;
}
title++; // 다음 숫자
}
}
}
풀이 :
1) 제목 변수 title 를 666으로 초기화 한다. (제일 작은 종말의 수)
2) title을 String형으로 변환하고 for문과 charAt()를 이용해 6이 연속으로 3가지가 있는지 확인한다.
3) 만약 6이 연속으로 3개가 있다면 종말의 수 이므로 영화 제목들을 넣을 arraylist six에 add해준다.
4) arraylist에 종말의 수를 add해주었다면 중복을 방지하기 위해 count 변수를 사용해준다.
5) 예를 들어 6666이면 666/6 or 6/666 종말의 수가 두가지 경우가 있기 때문에 두 번 add하게 된다.
6) title++ 해주어 다음 숫자를 판별한다.
7) arraylist six의 크기가 N만큼 되었다면 리스트의 마지막(N번째 영화 제목)을 출력하고 종료한다.
728x90
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바] 1427번 소트인사이드 / 2022.02.11 (0) | 2022.02.11 |
---|---|
[백준-자바] 2231번 분해합 / 2022.02.10 (0) | 2022.02.10 |
[백준-자바] 2798번 블랙잭 / 2022.02.09 (0) | 2022.02.09 |
[백준-자바] 9375번 패션왕 신해빈 / 2022.02.09 (0) | 2022.02.09 |
[백준-자바] 1018번 체스판 다시 칠하기 / 2022.02.09 (0) | 2022.02.09 |