728x90
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
다음 문제는 문자열 처리와 백트래킹을 사용하여 문제를 해결 하였습니다. 자기 자신을 포함하고 있거나 문자열의 길이가 만족할 경우 탐색을 멈춘다. 수열을 사전 순서대로 출력해야함으로 깊이우선탐색으로 순차적으로 탐색한다.
N , M = map(int, input().split())
def dfs(i, char):
char += str(i)
if len(char) == M:
for i in range(len(char)):
if i == len(char) -1:
print(char[i])
else:
print(char[i], end=' ')
for k in range(1, N+1):
if not str(k) in char:
dfs(k, char)
for i in range(1, N+1):
char = ''
dfs(i, char)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1707번 : 이분 그래프 (0) | 2023.07.23 |
---|---|
[백준] 12100번 : 2048 (Easy) (0) | 2023.07.21 |
[백준] 9663번 : N-Queen (0) | 2023.07.18 |
[백준] 2805번 : 나무자르기 (0) | 2023.07.17 |
[백준] 2110번 : 공유기 설치 (0) | 2023.07.17 |