1 분 소요

1288.새로운 불면증 치료법

문제

불면증에 걸려 잠이 안올때 흔히 하는 양 세기를 합니다.

좀 다른 방식으로 N의 배수 번호인 양을 세려고 합니다.

즉, 첫 번째에는 N번 양을 세고, 두 번째에는 2N번 양 ,…,k번째에는 kN번 양을 셉니다.

이때 궁금증이 생겼습니다. 이전에 셌던 번호들의 각 자리수에서 0에서 9까지의 모든 숫자를 보는 것은 최소 몇 번 양을 센 지점일까?

예를 들어 N = 1295라면 첫 번째로 1295 이고 현재 본 숫자는 1, 2, 9, 5입니다. 두 번째로 2N은 $1295*2$ 즉, 2590이고 0, 2, 5, 9이다. 세 번째로 3N는 3885이고 3, 8, 5를 봤으며 현재까지 0, 1, 2, 3, 5, 8, 9이다.

다섯 번째로 5N은 6475번 양을 셉니다. 그러면 6, 4, 7, 5를 보게 되고 0에서 9까지 모든 숫자를 보게 됩니다. 그리고 양 세기를 멈추게 됩니다.


생각해보기

우선 떠오르는 것은 0부터9까지 10개의 빈 요소를 가진 리스트 하나를 생성합니다.

N을 받은 다음 while문을 돌립니다. count = 1로 시작해서 수를 구하고 읽을때마다 해당 인덱스에 +1씩 합니다. 그리고 리스트의 길이가 10일때 멈추고 아니라면 카운트에 1을 더하고 다시 돕니다.

문제 풀기

T = int(input())
for tc in range(1, 1+T):
    N = int(input())
    count = 1
    Nlist = [0 for _ in range(10)]
    while len(Nlist) == 10:
        for i in str(N*count):
            Nlist[int(i)] = 1
        if sum(Nlist) == 10:
            print(f'#{tc} {count*N}')
            break
        else:
            count += 1

break를 안두니까 while문에 적당한 조건이 주어지지 않아 무한으로 수가 돌아가고 있었기 때문에 값을 찾으면 바로 break를 걸도록 했습니다.

카테고리:

업데이트:

댓글남기기