diff --git a/백준/Silver/15649. N과 M (1)/N과 M (1).py b/백준/Silver/15649. N과 M (1)/N과 M (1).py new file mode 100644 index 0000000..7e8e9f4 --- /dev/null +++ b/백준/Silver/15649. N과 M (1)/N과 M (1).py @@ -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) diff --git a/백준/Silver/15649. N과 M (1)/README.md b/백준/Silver/15649. N과 M (1)/README.md new file mode 100644 index 0000000..e930f2b --- /dev/null +++ b/백준/Silver/15649. N과 M (1)/README.md @@ -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 + +### 문제 설명 + +

자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

+ + + +### 입력 + +

첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

+ +### 출력 + +

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

+ +

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

+