백준 문제 링크: https://www.acmicpc.net/problem/15664
문제 요약
N개의 자연수 중에서 M개를 고른 수열
수열은 사전 순으로 증가하는 순서로 출력
고른 수열은 비내림차순이어야 한다.
중복되는 수열을 여러 번 출력하면 안됨
핵심 아이디어
9번 문제에서 비내림차순 조건이 추가되었다. 인덱스를 백트래킹 함수가 인자로 받고, 인덱스 기준부터 for문을 돌리면 된다.
풀이
# silver3-15664. N과 M (10)
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
nums = list(map(int, input().split()))
nums.sort()
array = []
def back(idx):
if len(array) == m:
for i in array:
print(nums[i], end=' ')
print()
return
last_num = 0
for i in range(idx, n):
if i not in array:
if nums[i] != last_num:
array.append(i)
last_num = nums[i]
back(i)
array.pop()
back(0)
실행 시간
메모리 31256KB, 시간 40ms (python3)
'ALGORITHM > 백준' 카테고리의 다른 글
[BOJ/PYTHON] 11170. 0의 개수 (0) | 2023.07.27 |
---|---|
[BOJ/PYTHON] 15665. N과 M (11), 15666. N과 M (12) (0) | 2023.07.27 |
[BOJ/PYTHON] 15663. N과 M (9) (0) | 2023.07.27 |
[BOJ/PYTHON] 15657. N과 M (8) (0) | 2023.07.27 |
[BOJ/PYTHON] 15656. N과 M (7) (0) | 2023.07.27 |
댓글