- 팩토리얼 함수를 만들어 제한 범위를 벗어날 경우와 벗어나지 않을 경우의 기준을 정해준다.
- 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)}")