Algorithm/BackTracking

[Baekjoon 15656 / Python / 실버3] N과 M (7)

양선규 2024. 8. 7. 19:51
728x90
반응형

문제

import sys
input = sys.stdin.readline

N, M = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort()
box = []

def backTracking(depth):

    if depth == M:
        print(' '.join(map(str, box)))
        return
   
    for i in range(N):
        box.append(numbers[i])
        backTracking(depth + 1)
        box.pop()

backTracking(0)

 

백트래킹( 사실 백트래킹도 아니다 )을 통해 모든 수열을 만들어 출력하기만 하면 된다. 

중복 수열은 안 되지만, 수열 내에서 중복된 숫자를 갖는 건 가능하다.

 

다만 특별했던 점은, 같은 자릿수를 가지는 숫자라면 str형태로 비교해도 완전히 결과가 같고 입력값은 자연수라 0으로 시작하는 수도 없기 때문에,

numbers를 입력받을 때 int로 변환하지 않고 받은 후 출력할 대도 map(str, box)를 사용하지 않고 그대로 출력하려 했다. 테스트 케이스도 다 맞았다.

그런데 원인은 모르겠지만 그대로 출력하려 하니 9%에서 오답 처리가 떴고, 다시 int로 받는 코드로 돌렸더니 정답 처리가 되었다.

 

원인을 알고 싶어 여러가지 찾아 보았는데 결국 정확한 원인은 찾지 못 했다. 백준 테스트 케이스 내에서 어떤 엣지 케이스라던가 특별한 케이스가 있는 게 아닌가 싶다.

728x90
반응형