https://www.acmicpc.net/problem/18511
- 브루트포스 형식으로 경우의 수 구성
- 목표인 N과 동일한 자리수를 가진경우
- 목표인 N의 자리수보다 1 만큼 작은 경우(N = 100인데 사용 가능한 숫자가 9인경우 99를 만들기 위해)
- 이미 N값보다 커졌을 경우 가지치기
def check(i,total):
global ans
if total > N:
return
if i < 0 :
if ans < total:
ans = total
return
for num in nums[::-1]: # 디버깅 쉽게 하려고 [::-1]
check(i-1,total+num*10**i)
N,K = map(int,input().split())
n=len(str(N))-1
nums = list(map(int,input().split()))
nums.sort() # 디버깅 쉽게 하려고 정렬
ans = 0
check(n,0)
check(n-1,0)
print(ans)
'알고리즘 문제 풀이 > Python' 카테고리의 다른 글
python 15650 N과 M(2) (0) | 2022.05.04 |
---|---|
python 백준 1753 최단경로 (0) | 2022.05.03 |
python 백준 2407 조합 (0) | 2022.05.03 |
python 1043 거짓말 (0) | 2022.05.01 |
python 1149 RGB 거리 (0) | 2022.05.01 |