재귀함수 너무 어렵다 ㅠㅠ..
매번 풀어도 헷갈리고 적응 안되는 것들 중 하나가 재귀함수 :(
너무 지저분하게 코드를 짠 것 같아서
좀 더 고민해보고 찾아봐야겠다 ㅠㅠ
일단은 for문 안에서 1차적으로 첫번째 숫자를 고른 뒤
permu 함수를 실행한다.
permu 함수 내에서 for문을 또 따로 돌려주고
그 안에서 재귀함수를 호출하여
순열을 찾아나가면 된다.
만약 현재 값이 입력값과 개수가 똑같고
answer_num이 n과 같다면?
답을 찾은것이다!
answer_num = 0
answer = ''
def permu(n, cnt):
global answer_num
global answer
if len(answer) == len(word):
answer_num += 1
if answer_num == n:
return False
for j in range(0, len(word)):
if visited[j]:
continue
visited[j] = 1
answer += word[j]
permu(n, cnt + 1)
if answer_num == n:
return False
visited[j] = 0
answer = answer[:-1]
return True
while True:
try:
word, n = input().split()
n = int(n)
cnt = 0
if n == '':
break
visited = [0 for _ in range(len(word))]
answer = ''
answer_num = 0
button = False
for idx in range(0, len(word)):
visited[idx] = 1
answer = word[idx]
if not permu(n, cnt + 1):
print('{} {} = {}'.format(word, n, answer))
button = True
break
visited[idx] = 0
if not button:
print('{} {} = No permutation'.format(word, n))
except EOFError:
break
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n8394] 악수 in python (0) | 2021.11.09 |
---|---|
[n10384] 팬그램 in python (문자열,아스키코드) (0) | 2021.11.08 |
[n1855] 암호 in python (0) | 2021.11.08 |
[n9372] 상근이의 여행 in python (0) | 2021.11.05 |
[n10546] 배부른 마라토너 in python (0) | 2021.11.04 |