Search

BOJ 1436 영화감독 숌

URL
태그
브루트포스 알고리즘

문제 설명

N번째로 작은 “666”이 연속으로 포함된 수를 찾아 출력하는 문제

예제 입력/출력

입력1
2
Plain Text
복사
출력1
1666
Plain Text
복사

제약 조건

0<N10,0000 < N ≤ 10,000

문제 풀이

접근1 브루트 포스 - O(N)O(N)
규칙성을 발견하면 좋겠지만 쉽게 규칙성이 발견되지 않는다.
4666 → 5666 → 6666 (x)
4666 → 5666 → 6660 (o)
따라서 이런 경우 입력값의 최대가 10,000개로 크지 않기 때문에 무작정 숫자를 다 더해서 찾아보는 브루트 포스 방식으로 문제를 해결할 수 있다.
count = 0 num = 666 반복: 만약 '666'이 num에 포함되어 있다면: count 증가 만약 count == N 이면: num 반환 num 증가
Python
복사

풀이 코드

def find_end_number(N): count = 0 num = 666 while True: if '666' in str(num): count += 1 if count == N: return num num += 1 # 입력값 받기 N = int(input()) print(find_end_number(N))
Python
복사

참고 자료