본문 바로가기

코딩테스트/백준

[백준-자바] 1436번 영화감독 숌 / 2022.02.09

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