기록하고 까먹지 말기

10974 본문

전공/백준

10974

yha97 2022. 12. 7. 00:08

날짜 : 2022. 12. 07

사용 언어 : python

 

문제

 

 

코드

import sys
sys.setrecursionlimit(10 ** 9)

n = int(sys.stdin.readline())
stack = []

def dfs():
    if len(stack) == n:
        print(*stack)  # 수열 완성 후 출력
        return
    for i in range(1, n+1):  # 1부터 시작
        if i not in stack:  # 수열 리스트에 없는 경우
            stack.append(i)  # 넣기
            dfs()
            stack.pop()

dfs()

 

 

풀이

- DFS를 활용해서 오름차순으로 for문을 돌리고 스택에 숫자가 없는 경우 넣은 후 재귀하는 방식으로 문제를 풀이했다.

(백트래킹)

 

 

알게된 점

- 오랜만에 백트래킹 문제를 풀어서 좀 어색했다.

- pypy로 해서 계속 메모리 초과가 떴는데 python3로 하니까 곧바로 풀렸다.

 

 

참고 사이트

- https://honggom.tistory.com/115

 

[백준] 10974번 문제 (모든 순열) 파이썬(Python) 풀이

https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net n = int(input()) temp = [] def dfs(): if len

honggom.tistory.com

 

'전공 > 백준' 카테고리의 다른 글

최단경로 응용문제(이코테) - 2  (0) 2022.12.07
최단경로 응용문제(이코테) - 1  (0) 2022.12.07
11403  (0) 2022.12.06
1417  (0) 2022.12.06
1654  (0) 2022.12.05