ALGORITHM

[JAVA] 백준 1436번 - 영화감독 숌

연듀 2022. 9. 16. 09:39

https://www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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 i=666;
        int cnt=1;

        while(cnt!=n){
            i++;
            String numStr = Integer.toString(i); // 숫자를 문자열로
            boolean flag = false;

            for(int j=0; j<=numStr.length()-3; j++){
                    if(numStr.charAt(j)-'0' == 6 && numStr.charAt(j+1)-'0' == 6 && numStr.charAt(j+2)-'0'==6){
                        if(!flag) cnt++;
                        flag =true;
                    }
            }
        }
        System.out.println(i);
    }
}

 

 

 

 

0부터 숫자를 증가시키면서 그 숫자가 연속으로 6을 3개이상 포함하고 있으면 카운트를 증가시킨다. 

이때 66660 과 같이 6이 3개 이상 있으면 카운트가 1개이상 증가하므로 이를 체크하기 위해 boolean형 변수를 만들었다. 

입력받은 숫자와 카운트가 같아질때의 숫자 i 를 구하면 된다.

 

 

 

근데 이렇게까지 할 필요가 없는게 다른 풀이들을 보니 contains함수를 쓰면 간단해질수 있었다.

까먹었는데 잘 기억해 놓자,,

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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 i=666;
        int cnt =1;

        while(cnt!=n){
            i++;
            if(String.valueOf(i).contains("666")) cnt++;
        }
        System.out.println(i);
    }
}