반응형
문제
https://www.acmicpc.net/problem/15666
15666번: N과 M (12)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
풀이
중복되는 수열을 여러 번 출력하면 안되며, 같은 수를 여러 번 골라도 된다.
따라서 start를 사용하고 vis를 빼준다.
코드
import sys
read = sys.stdin.readline
n, m = list(map(int, read().split()))
num = list(map(int, read().split())) #입력받은 수 저장
arr = [0 for _ in range(m)]
num.sort()
def choose(k,start):
if (k == m):
print(" ".join(map(str, arr)))
else:
temp = 0
for i in range(start,n):
if(temp != num[i]):
arr[k] = num[i]
temp = num[i]
choose(k + 1,i)
choose(0,0)
n과 m 시리즈 후기
이로써 n과 m 시리즈 끝! 사실 다 풀어야하나? 싶은게 그냥 n과 m하나에서 계속 조금씩 업그레이드 되는거라 n과 m(1)~(5) 정도만 풀어도 기본 백트래킹을 익히는데는 아무런 문제가 없을 것 같다.
그래도 다 푸는 재미가 있어서 그냥 풀어버렸다....
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/43162][Python] 네트워크 (0) | 2023.04.14 |
---|---|
[프로그래머스][Python] 타겟넘버 (0) | 2023.04.14 |
[백준/15665][파이썬] N과 M(11) (0) | 2023.04.11 |
[백준/15664][파이썬] N과 M(10) (0) | 2023.04.11 |
[백준/15663][파이썬] N과 M(9) (0) | 2023.04.11 |