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. 배운 점
- 어떤 것이 기준이 되어야 하는지 세우기
- 이번 기회에 함수 호출 관계를 더 자세히 따져볼 수 있었다.
'[ 알고리즘 ] > 오답노트' 카테고리의 다른 글
[ BOJ 오답노트 ] 1149 파이썬 : RGB거리 (0) | 2022.03.22 |
---|---|
[ BOJ 오답노트 ] 1904 파이썬 : 01타일 (0) | 2022.03.12 |
[ BOJ 오답노트 ] 10989 파이썬 : 수 정렬하기 3 (0) | 2022.02.28 |
[ BOJ 오답노트 ] 18870 파이썬 : 좌표 압축 (0) | 2022.02.26 |
[ BOJ 오답노트 ] 15649 파이썬 : N과 M (1) (0) | 2022.02.24 |