본문 바로가기

BAEKJOON/브루트포스

백준 1436번 [영화감독 숌](C++)-yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 1436 [영화감독 숌]


문제 링크: https://www.acmicpc.net/problem/1436

문제 설명:

영화감독 숌은 세상의 끝을 나타내는 숫자인 "666"이 들어간 숫자를 영화 제목으로 사용합니다.

n번째로 작은 "666"이 포함된 숫자를 출력하는 프로그램을 작성하세요.


문제 해결 코드


#include <iostream>
#include <string>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    cin >> n;

    string s;
    int k = 1; // 카운트 변수
    int i = 666; // 처음 시작하는 숫자

    while (true) {
        s = to_string(i); // 숫자를 문자열로 변환
        if (s.find("666") != string::npos) { // "666"이 포함된 경우
            if (k == n) { // n번째 영화 제목인 경우 출력
                cout << i << '\n';
                break;
            }
            k++;
        }
        i++; // 다음 숫자로 이동
    }
}

코드 설명

  • 핵심 아이디어: 숫자를 문자열로 변환한 뒤 "666"이 포함되었는지 확인합니다. 조건을 만족하는 숫자를 카운트하여 n번째 숫자를 찾습니다.
  • 구현 세부사항:
    • to_string(): 숫자를 문자열로 변환하여 문자열 검색에 활용.
    • s.find("666"): 문자열에서 "666"을 찾는 함수.
    • n번째로 "666"을 포함하는 숫자가 발견되면 반복문을 종료하고 출력합니다.
  • 시간 복잡도: O(n * m)
    • n: n번째 숫자를 찾기 위해 반복.
    • m: 숫자를 문자열로 변환 후 "666"을 찾는 과정.

결과

n번째로 작은 "666"이 포함된 숫자를 성공적으로 출력합니다. 문제의 조건에 맞게 효율적으로 구현되었습니다.

궁금한 점이나 다른 접근 방법이 있다면 댓글로 알려주세요!

728x90
LIST