*문제 출처는 백준에 있습니다.
문제 제목: N과 M (9) / 15663번 (실버 2단계)
문제 사이트: https://www.acmicpc.net/problem/1225
문제 설명
나의 풀이
n, m = map(int, input().split())
line = list(map(int, input().split()))
line.sort()
result = []
used = [False] * n # 각 숫자가 사용되었는지를 추적하기 위한 리스트
def dfs():
if len(result) == m:
print(' '.join(map(str, result)))
return
prev = -1 # 이전에 사용한 숫자를 저장
for i in range(n):
if not used[i] and prev != line[i]: # i번째 숫자가 사용되지 않았으면
used[i] = True # 현재 숫자를 사용한 것으로 표시
result.append(line[i])
dfs()
prev = line[i]
result.pop()
used[i] = False # 숫자를 사용하지 않은 상태로 돌려놓음
dfs()
※ 알아야 할 것
https://www.acmicpc.net/problem/15666
https://www.acmicpc.net/problem/15654
위 두 문제를 합쳐둔 문제이다. 이 문제를 풀기전에 위에 적혀있는 문제를 풀면 좋을 것 같다.
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 내리막 길 / 1520번 / Python (1) | 2024.09.19 |
---|---|
백준 / 연결 요소의 개수 / 11724번 / Python (0) | 2024.09.18 |
백준 / RGB거리 / 1149번 / Python (0) | 2024.09.12 |
백준 / N과 M (5) / 15654번 / Python (0) | 2024.09.11 |
백준 / 바이러스 / 2606번 / Python (0) | 2024.09.09 |