알고리즘 문제 풀이/Python

python 18511 큰 수 구성하기

맛대 2022. 5. 2. 22:39

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