본문 바로가기
백준/단계별

백준 1436 C#) 영화감독 숌

by alpacadabra 2022. 5. 28.

또다시 각 자릿수를 추출하는 문제가 등장했다.

 

public static class PS
{
    public static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        int num = 666;
        int cnt = 0;

        while (true)
        {
            if (Check(num))
            {
                if (++cnt == n)
                {
                    Console.Write(num);
                    return;
                }

                num += 1;
            }
            else
            {
                num += 3;
            }
        }
    }

    private static bool Check(int num)
    {
        int combo = 0;
        int digit;

        while (num > 0)
        {
            digit = num % 10;
            num /= 10;

            if (digit == 6)
            {
                if (++combo == 3)
                    return true;
            }
            else
            {
                combo = 0;
            }
        }

        return false;
    }
}

 

666부터 시작하여 각 자릿수를 뽑아내고 6이 연속으로 3번 이상 등장하는 지를 체크하면 된다.

어려운 문제는 아니었다. 다만 시간을 단축시키기 위한 아이디어가 잘 떠오르지 않는다...

 

참고로 나는 하나의 아이디어를 적용시켰다. 바로 숫자를 1, 3씩 증가시키는 것이다.

숫자에 666이 포함되어 있을 경우에는 1씩 증가시키고, 그렇지 않으면 3씩 증가시킨다.

문제를 풀다가 얼떨결에 떠올린 아이디어였는데 놀랍게도 정상 작동하더라...

시간이 되면 다음에 증명도 해봐야겠다.

'백준 > 단계별' 카테고리의 다른 글

백준 11651 C#) 좌표 정렬하기 2  (0) 2022.10.12
백준 11650 C#) 좌표 정렬하기  (0) 2022.10.12
백준 1018 C#) 체스판 다시 칠하기  (0) 2022.05.27
백준 7568 C#) 덩치  (0) 2022.05.25
백준 2231 C#) 분해합  (0) 2022.05.24

댓글