영화감독 숌

이윤설·2024년 4월 12일


제출코드

문제 이해를 못했음

모범답안

import java.io.*;

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 num = 666;
        int count = 1;

        while (count != N) {
            num++;

            // 666을 포함하는 숫자인지 검사한다.
            if (String.valueOf(num).contains("666")) {
                count++;
            }
        }
        System.out.println(num);
    }
}

배운점

  • 단순히 666 앞에 숫자를 순차적으로 올리면 되는 줄 알았는데, 그렇지 않다.
  • 5666 -> 6666 -> 7666 이 아니라, 5666 -> 6660 -> 6661 이다.
    왜냐하면 순차적으로 '666'이 들어가는 숫자를 찾아야 하는데, 6660이 6666보다 작은 수 이기 때문이다.
  • 따라서 count와 N이 같아질 때까지 반복하되, num이 '666'을 포함하면 count를 올리는 방법을 사용하면 된다.

브루트포스는 답안을 보면 간단한데 사고력을 요구하는 문제가 참 많은 것 같다.
이런 문제가 제일 싫다 ㅜㅜ

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글