백준 1436번: 영화감독 숌 C#

김보근·2025년 6월 4일

백준

목록 보기
32/62

📆백준 1436번: 영화감독 숌 (C#)

오늘은 백준 1436번 문제인 ‘영화감독 숌’ 문제를 풀었다.
문제 자체는 간단하지만 처음엔 로직이 어떻게 돌아가는지 감이 잘 안 왔었다.
천천히 디버깅하면서 흐름을 이해하고, while문이 어떻게 작동하는지 하나하나 따라가 보면서 완전히 감을 잡았다.

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

🧩 문제 설명

숫자를 하나씩 올려가면서 '666'이 포함된 수를 찾는 문제다.
예를 들어 666, 1666, 2666, 3666처럼, 숫자 안에 666이라는 문자열이 들어가기만 하면 조건을 만족한다.

N번째로 작은 그런 수를 찾는 게 문제의 핵심이다.

🧠 접근 방법

숫자 666부터 시작해서 하나씩 증가시킨다.

각 숫자를 문자열로 바꿔 "666"이 포함되어 있는지 확인한다.

포함되어 있다면 카운트를 증가시킨다.

카운트가 입력한 N과 같아지면 그 숫자를 출력하고 종료한다.

using System;

class Program
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        int count = 0;
        int number = 666;

        while (true)
        {
            if (number.ToString().Contains("666"))
            {
                count++;
                if (count == n)
                {
                    Console.WriteLine(number);
                    break;
                }
            }
            number++;
        }
    }
}

🔍 흐름 파악하기

처음엔 이 while(true) 루프가 도대체 언제 끝나는지, 내부 조건이 어떻게 동작하는지 좀 막막했다.
하지만 곰곰이 따라가보니 흐름은 단순했다.

number를 666부터 시작해서 하나씩 증가시킨다.

.ToString().Contains("666")를 통해 현재 숫자에 666이 들어있는지 확인한다.

들어있으면 count++

count == N이면 해당 숫자를 출력하고 종료한다.

예를 들어 N = 3이면,
→ 666, 1666, 2666 → 정답은 2666

💡 느낀 점

처음엔 숫자를 다 검사하는 게 너무 비효율적인 것 같았는데,
사실 C#에서 문자열 검사 속도가 빨라서 500번째 정도까지도 충분히 빠르게 계산된다.
그리고 무엇보다 중요한 건 로직을 직접 따라가면서 흐름을 눈으로 확인하는 게 훨씬 큰 도움이 됐다.

📌 기억할 점

문자열 검사 .Contains()는 간단하지만 매우 유용하다.

while (true) 루프를 쓸 때는 언제 break 되는지를 명확히 정리해두면 훨씬 이해가 쉽다.

디버깅용 출력으로 Console.WriteLine(count + ": " + number); 를 넣어보면 흐름이 눈에 훨씬 잘 들어온다.

profile
게임개발자꿈나무

0개의 댓글