[Silver III] Title: N과 M (1), Time: 156 ms, Memory: 36368 KB -BaekjoonHub

This commit is contained in:
SSUM
2026-03-30 18:50:42 +09:00
parent d4aab7e386
commit 0cab3f7160
2 changed files with 60 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
import sys
from collections import defaultdict, deque
from heapq import heapify, heappush, heappop
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
N, M = map(int, input().split())
visited = [False] * N
S = [0] * M
def backtrack(length):
if length == M:
a = " ".join(str(x+1) for x in S)
print(a)
return
for i in range(N):
if not visited[i]:
visited[i] = True
S[length] = i
backtrack(length+1)
visited[i] = False
backtrack(0)

View File

@@ -0,0 +1,34 @@
# [Silver III] N과 M (1) - 15649
[문제 링크](https://www.acmicpc.net/problem/15649)
### 성능 요약
메모리: 36368 KB, 시간: 156 ms
### 분류
백트래킹
### 제출 일자
2026년 3월 30일 18:50:27
### 문제 설명
<p>자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.</p>
<ul>
<li>1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열</li>
</ul>
### 입력
<p>첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)</p>
### 출력
<p>한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.</p>
<p>수열은 사전 순으로 증가하는 순서로 출력해야 한다.</p>