Stay Hungry Stay Foolish

SWEA

[SWEA] 1288. 새로운 불면증 치료법 (Python/D2)

dev스카이 2024. 10. 19. 13:58

[문제 링크] 👇

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

풀이

  1. 0 ~ 9 까지 수가 있는지 확인하는 리스트를 생성한다. 모두 -1 로 초기화한다.
  2. N의 배수를 위해 cnt 변수를 생성하고 1로 초기화한다.
  3. N의 배수를 담을 변수도 생성한다. 
  4. While문에서 양 세기를 시작한다.
    • N의 배수를 계산한다. 
    • map() 을 사용하여 정수를 분리하고 리스트에 담는다.
    • 리스트에서 정수를 하나씩 꺼내서, -1 로 초기화된 리스트에 그 정수가 없으면 리스트에 담는다.
    • 다 확인했으면 이제 -1 로 초기화된 리스트에서 0 ~ 9까지 모든 수가 있는지 체크한다.
    • -1이 아직도 있으면 cnt 변수를 하나 증가시고, 없으면 while문을 중단한다.
  5. 마지막으로 N의 배수를 출력한다.

 

리스트에 특정 값이 있는지 체크하는 방법

if i in nums:
  • nums 리스트에 특정 값 i 가 있으면 True 반환

 

리스트에 특정 값이 없는지 체크하는 방법

if i not in nums:
  • nums 리스트에 특정 값 i가 없으면 True 반환

 

Solution

test_case = int(input())
for tc in range(1, test_case + 1):
    n = int(input())
    nums = [-1]*10
    cnt = 1
    multi_n = n
    while True:
        multi_n = n * cnt
        num_list = list(map(int, str(multi_n))) #정수 분리
        for i in num_list:
            if i not in nums: #리스트에 특정 값이 없는지 체크
                nums[i] = i
        #0~9까지 모든 수가 있는지 확인
        if -1 in nums:
            cnt += 1
        else:
            break
    print("#%d %d" %(tc, multi_n))