[Baekjoon Online Judge] 백준 15663번 N과 M (9)
(Python)
(글쓴날 : 2020.03.30)
* Baekjoon Online Judge, 백준 15663번 문제 Python 언어 풀이입니다.
* 소스 코드의 저작권은 글쓴이에게 있습니다.
백준 15663번 N과 M (9)
1) 문제
문제 링크 : https://www.acmicpc.net/problem/15663
2) 풀이 과정
N과 M이 주어지고, N개만큼의 수가 주어질 때 N개만큼 주어진 수들 중 길이가 M인 수열을 모두 출력하는 문제입니다.
단, 한번 출력된 수열이 다시 출력돼서는 안되고, 각 수열들은 오름차순으로 출력되어야 합니다.
저의 경우, 먼저 DFS를 적용하여 가능한 모든 수열을 구한 뒤, Python의 집합 자료형인 set으로 형변환하여 중복을 제거했고 그렇게 얻어진 수열들을 정렬하여 차례로 출력해 문제를 해결했습니다.
3) 코드
* Python 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import sys
input = sys.stdin.readline
def DFS():
global M, li, visit, alreadyPrint, stack
if len(stack) == M:
alreadyPrint.append(tuple(stack[:]))
return
for i in range(len(li)):
if not visit[i]:
stack.append(li[i])
visit[i] = True
DFS()
stack.pop()
visit[i] = False
N, M = map(int, input().split())
li = (list(map(int, input().split())))
visit = [False] * len(li)
alreadyPrint = []
stack = []
DFS()
for x in sorted(list(set(alreadyPrint))):
print(*x)
|
'Deprecated' 카테고리의 다른 글
[Python] deque 사용법 (0) | 2020.03.30 |
---|---|
[Baekjoon Online Judge] 백준 1697번 숨바꼭질(Python) (0) | 2020.03.30 |
[Baekjoon Online Judge] 백준 4963번 섬의 개수(Python) (0) | 2020.03.29 |
[Baekjoon Online Judge] 백준 15649번 N과 M (1)(Python) (0) | 2020.03.28 |
[Baekjoon Online Judge] 백준 2667번 단지번호붙이기(Python) (0) | 2020.03.28 |