Skip to content

Latest commit

 

History

History
53 lines (46 loc) · 1.56 KB

9742.md

File metadata and controls

53 lines (46 loc) · 1.56 KB

백준 9742번 순열

image


코드 설명

  • 팩토리얼 함수를 만들어 제한 범위를 벗어날 경우와 벗어나지 않을 경우의 기준을 정해준다.
  • solution 함수를 만들어 구하고자 하는 번째에 있는 문자열을 구한다.
    -> cnt는 구하고자 하는 번째까지 도달하는데 이용한 변수이다. 즉 cnt는 0 ~ 구하고자 하는 번째의 수까지 1씩 증가시켜간다.
    -> 재귀를 이용해 문자열을 구하는데 문자 하나씩 추가하고, 구하고자 하는 문자열의 길이는 결국 입력받은 문자열의 길이와 같기 때문에 이를 이용해 조건을 만든다.
  • 문제에서 반복문을 빠져나오는 조건을 주지 않았기 때문에 입력이 주어지지 않는다면 빠져나오도록 설정한다. -> 예외처리

소스코드

  • 메모리 : 30860 KB
  • 시간 : 5164 ms
import sys

def factorial(n):
	result = 1
	for i in range(1,n+1):
		result *= i
	return result

def solution(sen, m):
	global cnt
	if m == len(s):
		cnt += 1
		if cnt == num:
			return sen
	else:
		for c in s:
			if c not in sen:
				temp = solution(sen+c, m+1)
				if temp:
					return temp

while 1:
	try:
		s, num = sys.stdin.readline().split()
		num = int(num)
	except:
		break
	limit = factorial(len(s))
	cnt = 0
	if num > limit:
		print(f"{s} {num} = No permutation")
	else:
		print(f"{s} {num} = {solution('',0)}")