링크: https://www.acmicpc.net/problem/15655
유형: 백트래킹
난이도: 실버3
스스로 풀었는가? ✅
import sys
N, M = 0, 0
sequence = []
visited = []
answer = []
def back(cnt, start):
global N, M, sequence, visited, answer
if cnt == M:
print(' '.join(map(str, answer)))
for i in range(start, N):
if not visited[i]:
visited[i] = True
answer.append(sequence[i])
back(cnt + 1, i + 1)
visited[i] = False
answer.pop()
readline = sys.stdin.readline
N, M = map(int, readline().split())
sequence = list(map(int, readline().split()))
sequence.sort()
visited = [False] * N
if M == 1:
output = '\n'.join(map(str, sequence))
print(output)
else:
back(0, 0)
if num in list: 조건문을 통해 값이 중복으로 들어가지 않도록 한다. (코드가 짧아지고 메모리가 줄어드는 대신 실행 시간이 약간 증가)풀이를 한번에 적으려니 기억이 안 난다.. 한 문제 풀 때마다 바로 풀이를 적는 게 편할 듯하다.
[ktb-algorithm-study] 2주차