[BOJ] N과 M (5)

Minsu Han·2022년 10월 11일
0

알고리즘연습

목록 보기
30/105

코드

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
arr = sorted(list(map(int, input().split())))
ans = []

def dfs():
    if len(ans) == m:
        print(' '.join(map(str, ans)))
        return
        
    for i in arr:
        if i not in ans:
            ans.append(i)
            dfs()
            ans.pop()

dfs()

결과

image


풀이 방법

  • 백트래킹 문제이다.
  • 수열을 사전순으로 출력해야 하므로 먼저 주어진 N개의 수를 오름차순 정렬한 다음 기존의 N과 M 문제와 유사한 방식으로 해결하였다.
  • 같은 수를 중복할 수는 없으므로 for문 안에 if i not in ans 조건을 만족하는 숫자만 수열에 추가하도록 하였다.

profile
기록하기

0개의 댓글