https://github.com/cjk09083/Code
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
해답 1)
'''
- DFS를 사용해 전개
- 192ms
'''
import sys
input = sys.stdin.readline
def dfs(depth, val):
global visit
if depth == m:
print(*val, sep = " ")
return
else:
for i in range(1,n+1):
if visit[i] == 0:
new_val = val.copy()
new_val.append(i)
visit[i] = 1
dfs(depth+1, new_val)
visit[i] = 0
return
if __name__ == "__main__":
n, m = map(int, input().split())
result = []
arr = list(range(1,n+1))
visit = [0] * (n+1)
# print(arr)
for i in range(1,n+1):
val = [i]
depth = 0
left = n
visit[i] = 1
dfs(depth+1, val)
visit[i] = 0
'미래의 나를 위한 메모 > 코딩테스트' 카테고리의 다른 글
[230216] Chat GPT로 코테 풀이 개선하기 (백준 14500 python) (0) | 2023.02.16 |
---|---|
[230120] 백준 9095번 - 1, 2, 3 더하기 (Python) (0) | 2023.01.20 |
[230119] 백준 1748번 - 수 이어 쓰기 1 (Python) (0) | 2023.01.19 |
[230117] 백준 6064번 - 카잉달력 (Python) (0) | 2023.01.17 |
[230116] 백준 14500번 - 테트로미노 (Python) (2) | 2023.01.16 |