본문 바로가기

알고리즘

[ Python ] 15657번 : N과 M (8)

728x90
반응형

코딩테스트 해설

백준 15657번: N과 M (8)

문제 유형 : 백트래킹

작성 코드

import sys


N, M = map(int, sys.stdin.readline().rstrip().split(" "))
sequence = sorted(map(int, sys.stdin.readline().rstrip().split(" ")))


def backtrack(start, current):
    if len(current) == M:
        print(" ".join(map(str, current)))
        return

    for i in range(start, N):
        backtrack(i, current + [sequence[i]])


backtrack(0, [])

접근 방식

  1. 백트래킹 방식을 적용하여 current의 크기가 M 일경우, 현재 값을 출력하도록 하고 재귀를 멈추도록 하여 불필요한 연산을 줄이도록 함

개선 사항

  1. 불필요한 연산을 줄였습니다.
  2. 백트래킹을 사용하여 올바르게 작동하도록 하였습니다.

728x90
반응형