(풀이)
모든 수를 다 따져야 한다 (중복포함)
이때는 순열 + 중복허용을 하는 Product 함수를 사용해야 한다.
>>
중첩 루프에 해당하는 데카르트 곱
https://docs.python.org/3.8/library/itertools.html
permutations는 순열이지만 중복 x
combination은 조합, (순서 X)
list(product(배열, repeat=숫자))
>>
[('1', '1', '1'), ('1', '1', '5'), ('1', '1', '7'), ('1', '5', '1'), ('1', '5', '5'), ('1', '5', '7'), ('1', '7', '1'), ('1', '7', '5'), ('1', '7', '7'), ('5', '1', '1'), ('5', '1', '5'), ('5', '1', '7'), ('5', '5', '1'), ('5', '5', '5'), ('5', '5', '7'), ('5', '7', '1'), ('5', '7', '5'), ('5', '7', '7'), ('7', '1', '1'), ('7', '1', '5'), ('7', '1', '7'), ('7', '5', '1'), ('7', '5', '5'), ('7', '5', '7'), ('7', '7', '1'), ('7', '7', '5'), ('7', '7', '7')]
from itertools import product
n, k = map(int, input().split())
arr = list(map(str, input().split()))
length = len(str(n))
# product : 중복순열
while True:
temp = list(product(arr, repeat=length)) # repeat을 통해 몇개를 뽑을지 설정한다.
ex = []
for i in temp:
now=int(''.join(i))
if now <= n:
ex.append(now)
if len(ex) >= 1:
print(max(ex))
break
else:
length -= 1
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n13900] 순서쌍의 곱의 합 in python (0) | 2021.09.28 |
---|---|
[n1515] 수 이어 쓰기 in python (0) | 2021.09.28 |
[n2304] 창고 다각형 - 파이썬 (0) | 2021.09.23 |
[n2567] 색종이2 - 파이썬 (0) | 2021.09.23 |
[n1743] 음식물 피하기 | python | BFS (0) | 2021.09.10 |