본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 15665 N과 M (11)

by Alan_Kim 2023. 1. 6.
728x90
반응형

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

 

15665번: N과 M (11)

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

www.acmicpc.net

 

문제 해결

이전의 N과M 문제와 비슷하지만 몇 가지 다름

https://thought-process-ing.tistory.com/88

 

[python] 백준 15664 N과 M (10)

https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

thought-process-ing.tistory.com

https://thought-process-ing.tistory.com/87

 

[python] 백준 15663 N과 M (9)

https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

thought-process-ing.tistory.com

우선 같은 수를 여러번 사용 가능하지만 여러번 출력은 불가능 => [1, 1] 출력 가능 But 한번만 출력 가능 [1, 2] 출력 가능

사실 입력값에 같은 수가 있던가 없던가 상관이 없음. => 입력값으로 원소를 받는 리스트를 집합(set)으로 만든 후 다시 리스트로 만들어도 됨(자연스럽게 중복을 잡을 수 있다.)

오름차순 출력이므로 리스트를 sort() 시킨다.

 

CODE

import sys
input = sys.stdin.readline

def dfs(num):
    if len(num) == m:
        print(*num)
        return
    for i in A:
        num.append(i)
        dfs(num)
        num.pop()
if __name__=="__main__":
    n, m = map(int, input().split())
    A = list(set(list(map(int, input().split()))))
    A.sort()
    num = []

    dfs(num)
728x90
반응형

댓글