알고리즘 :: 큰돌 :: Chapter2 - DFS/BFS :: 백준 1436 영화감독 숌

Embedded June·2023년 6월 30일
0
post-thumbnail

문제

문제 링크

해설

  • 함정문제입니다.
    • 0666, 1666, 2666, 3666, 4666, 5666,
    • 6660, 6661, …., 6669, 7666, 8666, 9666
    • 총 19개… 그게 10666부터 11666까지…
    • 이렇게 빠져들기 시작하면 이 문제의 함정에 빠진 것입니다 ㅎㅎ
  • 함정에 걸리는 가장 큰 이유는 N이 10,000까지 가능하기 때문인데, 10,000번째 종말의 수가 오버플로우가 될 수도 있다고 생각했기 때문입니다. 아는 만큼 함정에 더 걸리기 쉬운 문제죠.
  • 되려 단순하게 1부터 카운팅하면서 666으로 나머지연산(%)하면 됩니다.

코드

#include <iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

    int N;
    cin >> N;

    int answer = 0;
    int num = 665;
    while (answer != N) {
        num++;
        int temp = num;
        while (temp) {
            if (temp % 1000 == 666) {
                answer++;
                break;
            }
            temp /= 10;
        }
    }
    cout << num << '\n';
    return 0;
}

소스코드 링크

결과

profile
임베디드 시스템 공학자를 지망하는 컴퓨터공학+전자공학 복수전공 학부생입니다. 타인의 피드백을 수용하고 숙고하고 대응하며 자극과 반응 사이의 간격을 늘리며 스스로 반응을 컨트롤 할 수 있는 주도적인 사람이 되는 것이 저의 20대의 목표입니다.

0개의 댓글