티스토리 뷰

반응형

www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

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

www.acmicpc.net

 


 

 

 문제

 입력

 출력

 예제 입출력

 알고리즘 분류

  • 브루트포스 알고리즘

 


 

 문제 접근 과정

 

6이 연속으로 3번

666, 1666, 2666, 3666, 4666, 5666 ,6660, 6661 이런 식으로 증가한다.

 

처음엔 이 경우를 생각하지 못하고 5666,6666,7666으로 생각해 코드가 굉장히 쉽게 짜져

당당히 채점을 해봤는데

 

결과는 역시.

 

 

위처럼 예외의 경우도 다 계산해줘야 한다.

 

나는 count를 활용했다.

자연수를 계속 증가시켜 6이 연속 3번 있는 666이 포함된 값을 지나갈 때

count stack이 1 증가하도록 설정했다. 이때 str 클래스의 contains() 함수를 활용했다.

 

그리고 count와 처음에 입력받은 N이 같아질 때까지 계속 반복시켜줬다.

count 값과 N값이 같아지면 우리가 원하는 값인 num을 출력하도록 하도록 알고리즘을 구상했다.

 


 

contains()

 

자바에서 contains() 함수는 문자열에 특정 문자열이 포함되어 있는지 확인해주는 함수이다.

대소문자를 구분하고 특정 문자열이 포함되어 있으면 true, 없다면 false를 반환한다.

 

 contains() 사용법

 

str.contains("찾고자 하는 문자열");

 


 

 문제 풀이

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int num = 1;
        int count = 0;


        while (count!=N) {
            String shhom = ""+num;

            if (shhom.contains("666")) {
                count++;
            }
            num++;
            }
        System.out.println(num-1);
        }

    }

 

 


 결과

 

 


 마무리

 

 

 

브루트포스 알고리즘이 생각보다 까다롭고 메모리, 시간 부분에서 실력차이가 많이 나타났다.

 

브루트포스 알고리즘 특성상 모든 경우의 수를 대입해보기 때문에 메모리 양과 데이터 양이 절대적으로 많다.

그래서 여러 가지 방법으로 문제에 접근할 수 있어야 하고 그 접근방법들 중에서 가장 최적의 방법을 선별해 문제를 풀어야겠다고 생각했다.

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함