[SWEA]1288. 새로운 불면증 치료법
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를 걸도록 했습니다.
댓글남기기