[파이썬/python] 백준 15655번 : N과 M (6) (🥈3)

n,m = map(int,input().split())
num = list(map(int,input().split()))
num.sort()

li = []


def bt():
    if len(li) == m:
        print(*li)
        return 
    
    for i in num:
        if not li or i > li[-1]:
            li.append(i)
            bt()
            li.pop()
bt()

처음에 li가 빈 배열인지 아닌지 체크해 주어야 한다. 오른쪽에 있는 수가 왼쪽에 있는 수보다 작거나 같지 않아야 하기 때문에 i > li[-1] 라는 조건문이 필요한데, li가 비어있으면 해당 조건문으로 인해 list index out of range 오류가 발생한다. 따라서 not li 라는 조건문도 추가하여 li가 true가 아닐 때(비어있을 때, 즉 false일 떄) 또는 i > li[-1] 일 때 코드가 작동되도록 해 준다.

comment