14361. 숫자가 같은 배수

홍범선·2023년 4월 19일
0

SW Expert Academy

목록 보기
8/18

14361. 숫자가 같은 배수

문제

풀이

테스트 케이스 중 1035를 예로 들면
N의 배수는 즉 2이상인 것을 암묵적으로 알 수 있다. 1일 경우 자기 자신이 나오기 때문에 의미없다.
그래서 2부터 시작하면 1035 x 2 = 2070 이 되고
2070 인덱스 별 원소를 1035에서 찾는 것이다. 즉
i = 0번째 일 때 2이고 2는 1035안에 없다. 따라서 해당 케이스는 불가능이다.
k = 3일 때 1035 x 3 = 3015이다.
i = 0일 때 3이고 1035안에 있다. 1035 => 105가 된다.
i = 1일 때 0이고 105안에 있다. 105 => 15가 된다.
i = 2일 때 1이고 15안에 있다. 15 => 5가 된다.
i = 3일 때 5이고 5안에 있다. 5 => ""가 된다.
이것은 possible하다.
이렇게 자리수가 변할 때 까지 찾고 자리수가 변할 때 까지 possible이 나오지 않으면 impossible이다.

for test_case in range(1, T + 1):
    n = int(input())      
    s = list(str(n))
    max_num = 10 ** len(s)  
    
    k = 2
    while True:
        if n*k >= max_num:
            print("#" + str(test_case) + " " + "impossible")
            break
        tmp = s.copy()
        arr = list(str(n*k))
        cnt = 0
        flg = False
        
        while tmp:
            target = arr[cnt]
            for i in range(len(tmp)):
                if target == tmp[i]:                 
                    tmp.pop(i)
                    break
                if i == len(tmp) - 1:                       
                    flg = True
                    break
            if flg:
                break
            cnt += 1
        if not flg:
            print("#" + str(test_case) + " " + "possible")
            break
        k += 1
        
profile
날마다 성장하는 개발자

0개의 댓글