Leta Learns

[Python] 백준 15665번 - N과 M (11) 본문

Coding/백준

[Python] 백준 15665번 - N과 M (11)

leta 2022. 2. 26. 19:49

문제 https://www.acmicpc.net/problem/15665

 

15665번: N과 M (11)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

아 처음에 바로 시도했던 방식이 맞았는데 터미널에서 출력할 때 입출력 구분이 안 돼서 입력 받는 수열까지 출력된 거라고 생각했다. 그래서 다른 방법으로 풀다가 아까 입출력을 헷갈렸다는 것을 깨달았다. 괜히 다른 방법으로 풀었다가 시간초과나고ㅋㅋㅜㅜ

암튼 내가 헛짓해서 그렇지 문제 자체는 n과 m 차례대로 풀었다면 비교적 쉽게 고안할 수 있는 문제였다.

 

 

같은 수를 여러 번 골라도 되기 때문에,

n과 m (9) 코드에서 dfs함수의 for문 내부의 if문에 visited 조건만 빼주면 된다.

 

import sys
input = sys.stdin.readline

def dfs():
    if len(ans) == m:
        print(*ans)
        return
    
    same = 0
    for i in range(n):
        if same != num[i]:
            ans.append(num[i])
            same = num[i]
            dfs()
            ans.pop()

n, m = map(int, input().split())
num = list(map(int, input().split()))
num.sort()
ans = []
anss = []
dfs()

Comments