본문 바로가기
BOJ

[Python] 백준 14381, 14382: 숫자세는 양

by 야호호코코 2024. 7. 17.
반응형

 solved.ac기준 Silver 4

문제

블리트릭스라는 양은 더 빨리 잠을 들기 위한 전략을 세웠다.

먼저, 숫자 N을 뽑는다. 그리고 N, 2 × N, 3 × N 등을 떠올린다. 숫자를 떠올릴 때 마다, 그 숫자의 모든 자리수의 숫자들을 적어놓는데, 이미 적은 숫자는 또 적지 않는다. 0에서 9까지의 모든 숫자가 적히게 되면 잠이 든다.

블리트릭스는 N에서 시작해서 i × N 후에는 (i + 1) × N을 떠올리게 된다. 예를 들어 N = 1692 일 경우, 다음 과 같이 진행된다:

  • N = 1692. 1, 2, 6, 9가 기록된다.
  • 2N = 3384. 1, 2, 3, 4, 6, 8, 9가 기록된다.
  • 3N = 5076. 모든 수가 기록되고, 잠에 빠진다.

블리트릭스가 잠에 빠지는 수는 무엇인가? 영원히 잠에 들 수 없다면 INSOMNIA라고 출력하라.

입력

첫 번째 행은 케이스의 개수, T이다. 다음 행부터는 T개의 케이스들이 나온다. 각 케이스는 블리트릭스가 고른 하나의 숫자 N으로 구성된다.

제한

  • 1 ≤ T ≤ 100.
  • 0 ≤ N ≤ 200.
  • 0 ≤ N ≤ 10^6 (14382 Large의 경우)

출력

각 케이스에 대해서, 케이스 번호가 x이고 y가 정답일 때, Case #x: y라고 출력해야 한다.

예제 입력 1

4
0
1
2
11

예제 출력 1

Case #1: INSOMNIA
Case #2: 10
Case #3: 90
Case #4: 110

 

정답 코드

T = int(input())

for _ in range(T):
    
    N = int(input())

    result = "INSOMNIA"

    tmp = ""
    for i in range(1, 201):
        tmp += str(N * i)
        find = True
        for j in range(10):
            if str(j) not in tmp:
                find = False
                break
        
        if find:
            result = N * i
            break

    print(f"Case #{_+1}:", result)

 

 파이썬의 특 장점인 빠른 형변환을 통해 정수를 숫자에 대입하여 0~9가 들었는지 검사하는 과정을 반복했다.

 N에 1부터 순차적으로 곱한 것을 임시 변수에 문자열로 저장하여 넣고, 0부터 9까지 들어있는지 검사하여 들어있다면 결과를 출력한다. 이를 200까지 곱하는 것으로 반복하는데, small에서는 N이 200까지라 그렇게 했지만, Large에서도 그대로 써도 맞는 모습을 보여준다.

반응형