Baekjoon 문제 풀기 (1436번 : 영화감독 숌) Python

1436번 : 영화감독 숌

1. 문제읽기


특정 문자열이 포함된 숫자 카운트하기

특정 문자열이 포함 된 문자열을 카운트하는 문제이다.

2. 제출 코드


얼추 비슷하게 다가는 간 것 같은데 역시나 고질병인 모든 경우의 수를 구해놓고 해결하기 병이 도져서 코드가 갈수록 난해해졌다.
숫자와 문자열을 합해서 해결하려고 한 것 까지는 좋았는데, 5666 이후 6660이 되는 규칙을 도저히 찾을 수가 없었다.
count 함수를 쓰려고 해봤는데, in을 사용한다는 개념을 알았으면 풀었을 것 같다!
완전탐색 문제라고도 생각을 못했다.
어쨌든 간단하게 생각했다면 풀 수 있었을지도 모르겠다..
아쉬웠다.

역시나 제출도 못한 미완성 코드지만 남겨놓기.

n = int(input())

arr = []
new_arr = []
num = 0
six = "666"
while n > len(new_arr):
    if num == 6 or num == 66 or num == 666 or num == 6666:
        for i in range(10):
            arr.append(int(six+str(i)))
    arr.append(int(str(num) + six))
    set_arr = set(arr)
    new_arr = list(set_arr)
    num += 1


new_arr.sort()
if n == 1:
    print(666)

print(new_arr)
print(new_arr[n-1])

3. 공부할 것


num은 666 부터 시작해도 된다.
숫자를 1씩 증가시킬때마다 “666” 문자열이 num에 포함되어있으면 count를 1개씩 증가시킨다.
count 가 n과 동일하다면 찾는 n번째 수이므로 num을 출력한다.

n = int(input())
num = 666
count = 0

while True:
	if "666" in str(num):
		count += 1
	if count == n:
		print(num)
		break
	num += 1

댓글남기기