소스코드
n = int(input())
per = []
def dfs() :
if len(per) == n:
print(*per)
for i in range (1, n+1):
if i not in per :
per.append(i)
dfs()
per.pop()
dfs()
알고리즘
1. for 문을 돌리면서 1부터 n까지 리스트에 넣는다.
2. 길이가 n이면 출력
실제로 per에 들어가는 과정은 다음과 같다
1번 루프 : 1 -> dfs() ------------------------------------> 다음에 2, 3을 넣음
2번 루프 : 1은 이미 있으니깐 2를 넣음 -> 1 ,2 -> dfs() ---> 다음에 3을 넣어야 함
3번 루프 : 1,2 이미 존재 -> 3을 넣고 dfs()
4번 루프 : 1,2,3 -> n이 3이니 print -> for문 다 돌았으니 4번 루프 끝 -> 3번 루프의 per.pop() -> 3을 pop() -> 1,2 3번 루프 끝
-> 2번 루프의 per.pop() -> 1 -> 2번루프에서 이제 3을 넣어햐하므로 -> 1,3 -> dfs() -> 2를 넣음 -> 1,3,2 -> 모든 루프들 종료
빈 리스트
1번 루프의 2를 넣음 나머지는 동일
'Coding test' 카테고리의 다른 글
[백준/1543/파이썬] 문서 검색 - Greedy (0) | 2024.02.05 |
---|---|
[백준/20044/파이썬] Project Teams - Greedy (2) | 2024.02.05 |
[백준/15989/파이썬] 1,2,3 더하기 4 - dp (1) | 2023.12.10 |
[백준/2775/파이썬] 부녀회장이 될테야 (0) | 2023.11.30 |
[백준/1931/파이썬] 회의실 - Greedy (2) | 2023.11.27 |