본문 바로가기
[ 알고리즘 ]/오답노트

[ BOJ 오답노트 ] 15650 파이썬 : N과 M (2)

by 불주먹고양이 2022. 3. 1.

2022 03 01

 

1. 틀린 기록

 

 

 

2. 원인 분석

- 틀리지는 않았지만 생각하는 데에 오래 걸려서 오답노트를 적기로 했다.

- 그 전 문제인 15649번과 다른 점이 동일한 쌍은 한번만 출력하도록 하는 것이다.

- 따라서 출력할 때의 첫번째 원소가 기준이 되어서 그 다음 원소들이 점점 커지는 형태로 출력되어야 한다.

 

 

 

3. 해결

n, m = map(int, input().split(' '))

arr = []


def nm(start):
    if len(arr) == m:
        print(' '.join(map(str, arr)))
    else:
        for i in range(start, n+1):
            if i not in arr:
                arr.append(i)
                nm(i + 1)
                arr.pop()


start = 1
nm(start)

- 호출 관계가 복잡해서 한번 정리해보았다.

- 빨간색 박스는 처음 호출된 함수이다.

- 주황색 박스는 맨 처음 원소를 기준으로 한 재귀 호출된 함수이다.

 

ex. n = 4, m = 2

 

 

 

4. 배운 점

- 어떤 것이 기준이 되어야 하는지 세우기

- 이번 기회에 함수 호출 관계를 더 자세히 따져볼 수 있었다.