ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2/2기록 - 백준 1436
    Algorithm 2022. 2. 2. 09:56
    728x90

    오늘은 백준 1436번 영화감독 숌 문제를 풀어보았다. 

     

     

    문제는 이러하다. 영화감독 숌은 그냥 허울이고 정확하게 말해서는 종말의 숫자 666이 들어가는 수를 오름차순으로 나열하는것.

    N이 2라면 666이 들어가는 수 중 두 번째로 작은 수 1666이, N이 3이라면 666이 들어가는 수 중 세 번째로 작은 수 2666이 출력되게 되는 것이다. 문제를 보면서 오름차순으로 모든 수를 검사해서 666을 포함하면 출력해 주면 되겠다는 생각이 들었다. 흔히 말하는 브루트 포스 알고리즘을 사용하면 될듯했다.

     

    알고리즘 생각

    1. N을 입력받는다.

    2. num 변수를 0으로 설정하고 모든 수를 순차적으로 검사할 준비를 한다.

    3. count 변수 0으로 선언

    4. while문을 무한 루프로 돌려주면서, num을 먼저 ++시켜서 계속 증가시켜 준다.

    5. 숫자가 포함되는지 검사하기 위해서는 문자열로 변환시켜 주어야 하므로 int형 타입인 num을 String.valueOf()를 사용하여 String타입으로 변환시켜준다.

    6. contains() 메소드를 사용하여 num이 666을 포함할 경우 count++ 시켜준다.

    7. 만약 count가 N과 같아지면 while문 빠져나온다.

    8. num 출력

     

     

    이렇게 풀어낼 수 있었다. 브루트 포스법을 사용하여 모든 수를 검사하고 666을 포함하는 수 마다 검색해 내어 counting 해주면 되는 문제였다.

     

    **문자열 비교에 주로 사용되는 메소드 charAt(), contains(), equals()

     

    브루트 포스법을 사용해서 엄청나게 많은 모든 수를 다 선형 검색 하다보니 메모리가 좀... 에바스럽긴 하다. ㅠㅠㅠ

     

    2/2 기록 끝!!!!!!!!

    728x90
Designed by Tistory.