본문 바로가기

Certificate/Cos Pro 1급 (Python)

[Cos Pro 1급] 기출문제 4회차, n번째로 작은 수 구하기

Hi, There!
안녕하세요, 바오밥입니다.


목차

  1. 문제
  2. 풀이

문제

문제 내용

1 이상 9 이하 숫자가 적힌 카드를 이어 붙여 숫자를 만들었습니다.

이때, 숫자 카드를 조합해 만든 수 중에서 n이 몇 번째로 작은 수인지 구하려 합니다.

예를 들어, 숫자 카드 1, 2, 1, 3로 만들 수 있는 수를 작은 순으로 나열하면 [1123, 1132, 1213, 1231, 1312, ... , 3121, 3211]입니다.

n이 1312라면, 숫자 카드를 조합해 만든 수 중 n은 5번째로 작은 수입니다.

 

숫자 카드를 담은 리스트 card, 수 n이 매개변수로 주어질 때 숫자 카드를 조합해 만든 수 중에서 n이 몇 번째로 작은 수인지 return 하도록 solution 함수를 완성해주세요.

 

매개변수 설명

카드에 적힌 숫자를 담은 리스트 card, 수 n이 solution 함수의 매개변수로 주어집니다.

  • card는 길이가 9 이하인 리스트입니다.
  • card의 원소는 1 이상 9 이하인 자연수입니다.
  • n은 999,999,999 이하인 자연수입니다.
  • n의 자릿수는 리스트 card의 길이와 같습니다.
  • n의 각 자리의 숫자는 1 이상 9 이하입니다.

 

return 값 설명

숫자 카드를 조합해 만든 수 중에서 n이 몇 번째로 작은 수인지 return 해주세요.

  • 만약, n을 만들 수 없다면 -1을 return 해주세요.

 

예시

 

예시 설명

 

예시 #1

앞서 설명한 예와 같습니다.

 

예시 #2

숫자 카드를 조합하면 [1112, 1121, 1211, 2111]를 만들 수 있습니다. 따라서 1122는 만들 수 없습니다.


풀이

풀이 코드 및 해설

 

def solution(card, n):
	# 풀이
	return answer