From 0cab3f716054d57bbf6a354db11ebbd22f5b8fbe Mon Sep 17 00:00:00 2001 From: SSUM <116950962+ssum21@users.noreply.github.com> Date: Mon, 30 Mar 2026 18:50:42 +0900 Subject: [PATCH] =?UTF-8?q?[Silver=20III]=20Title:=20N=EA=B3=BC=20M=20(1),?= =?UTF-8?q?=20Time:=20156=20ms,=20Memory:=2036368=20KB=20-BaekjoonHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 백준/Silver/15649. N과 M (1)/N과 M (1).py | 26 ++++++++++++++ 백준/Silver/15649. N과 M (1)/README.md | 34 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 백준/Silver/15649. N과 M (1)/N과 M (1).py create mode 100644 백준/Silver/15649. N과 M (1)/README.md 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)

+ +### 출력 + +

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

+ +

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

+