파이썬 문제풀이/구현

[삼성sw 파이썬] 1288 새로운 불면증 치료법

ari0930 2024. 4. 27. 23:01

[삼성 sw 파이썬] 1288 새로운 불면증 치료법

문제

양을 1번부터 순서대로 세는 것이 재미없어 N의 배수 번호인 양을 세기로 하였다.

즉 처번째에는 N번 양을 세고 두 번째는 2N... K번재에는 KN번 양을 센다.

이전에 셌던 번호들의 각 자리수에서 0에서 9까지 모든 숫자를 보는 것은 최소 몇 번 양을 센 시점일까?

5N번 양을 세면 0에서 9까지 모든 수를  보게 되므로 호석이는 양 세기를 멈춘다.

입력

첫줄은 테스트 케이스 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에서는 N이 주어진다.

출력

각 테스트 케이스마다 #테스트 케이스 번호를 출력하고 최소 몇 번 양을 세어야지 

0부터 9까지 모든 숫자를 보게 되는지 출력한다.

풀이

나는 array라는 리스트를 만들어서 각 자릿수를 집어넣고 ans에 0부터 9까지 수를 넣은 리스트하고 비교하여 같으면 종료 같지 않으면 다음 배수의 수에 대해서 각 자릿수를 다시 array리스에 넣는 형식으로 코드를 작성하였다.

각 자리수를 집어넣을 때 중복을 발생하지 않기 위해 array에 있는지 없는지 검사하였고 없다면 array추가하였으면 이 과정이 끝나고 난 후에는 정렬을 하였다.

코드

test=int(input())

for t in range(test):
    n=int(input())

    array=[]
    ans=[0,1,2,3,4,5,6,7,8,9]
    count=1
    while array!=ans :
        for i in str(n*count):
            if int(i) not in array:
                array.append(int(i))
        array.sort()
        if array==ans:
            break
        count+=1

    print("#{} {}".format(t+1,count*n))

결과

 

반응형