본문 바로가기

백준18511 - 큰 수 구성하기 (재귀) python 본문

개발/algorithm

백준18511 - 큰 수 구성하기 (재귀) python

자전하는명왕성 2023. 12. 31. 10:04

https://www.acmicpc.net/problem/18511

문제 설명 주어진 집합으로 n보다 작으며 가장 큰 수를 구하는 문제다.

 

문제 풀이 방식

재귀를 활용하여 만들 수 있는 모든 경우를 구한 뒤 출력하는 방식으로 구현했다. 

import sys
data_temp = sys.stdin if sys.platform == 'linux' else open('입력.txt', 'r')
input_data = data_temp.read().splitlines()

def solution (data) :
  arr = [list(map(int, v.split())) for v in data]
  [T,N],numbers = arr
  storage = []
  
  def recursive (n) :
    if n > T : return 
    
    for num in numbers : 
      next = n * 10 + num
      if T >= next : 
        storage.append(next)
        recursive(next)
        
  for num in numbers : 
    storage.append(num)
    recursive(num)
  
  storage.sort()
  print(storage[-1] if len(storage) else 0)
  
solution(input_data)
Comments