https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
sequence가 우리가 구하려는 수열을 저장하는 리스트이다.
use 리스트를 만든 이유는 sequence에 어떤 숫자가 중복해서 들어가지는 않았는지 빠르게 확인하기 위해서 만든 건데 시간이 여유로워서 그냥 sequence 안에 어떤 숫자가 있는지 없는지 그때그때마다 확인해도 상관없을 것 같다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
use = [0] * N
sequence = []
def dfs():
if len(sequence) == M:
print(' '.join(map(str, sequence)))
return
for i in range(0, N):
if use[i] == 0:
sequence.append(i + 1)
use[i] = 1
dfs()
use[sequence.pop() - 1] = 0
dfs()
'알고리즘 > 백준' 카테고리의 다른 글
[백준 15651][파이썬] N과 M (3) (0) | 2022.02.15 |
---|---|
[백준 15650][파이썬] N과 M (2) (0) | 2022.02.14 |
[백준 3190][파이썬] 뱀 (0) | 2022.02.13 |
[백준 11613][파이썬] ASCII Addition (0) | 2022.02.13 |
[백준 16584][파이썬] Binary String (0) | 2022.02.13 |