[백준 / Python] 18511. 큰 수 구성하기

띵슈롱·2023년 10월 23일
0

PS(Problem Solving)

목록 보기
10/17

문제

접근 방법

해당 자리에 올 수 있는 수가 k개 만큼 다 올 수 있어 중복순열을 사용했다.

문제 풀이

어려웠던 점

for i in range(len(str(n)),0, -1):
    cand = list(product(arr, repeat = i))
    temp = 
    

파이썬 itertools에서 중복 순열을 구해주는 product를 사용했는데
product는 튜플로 리턴을 해준다.
리턴 받은 튜플에 있는 요소를 이용해 정수로 만들어 temp 변수에 저장해 주려고 했는데 이부분에서 막혔다.

계속 고민하다 도저히 모르겠어서 구글링을 해봤는데

temp = int(''.join(map(str, cand)))

튜플을 str 로 변경하고 join 해준 값을 int 로 바꿔 temp를 구할수 있었다.

최종 코드

from itertools import product

n , k = map(int, input().split())
arr = sorted(list(map(int, input().split())), reverse=True)
leng = len(str(n))

while True:
    cand = list(product(arr,repeat = leng))
    ret = []
    
    for i in cand:
        temp = int(''.join(map(str, i)))
        if temp <= n:
            ret.append(temp)
            
    if len(ret) >= 1:
        print(max(ret))
        break
    else:
        leng -= 1
        
profile
어떻게 하는겨?

0개의 댓글