[BOJ] 15651: N과 M(3)

이슬비·2023년 1월 19일
0

Algorithm

목록 보기
59/110
post-thumbnail

오늘은 새로운 오류를 발견하였다.

1. 내 풀이

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
s = []

def dfs():
    if len(s) == m:
        print(" ".join(map(str, s)))
        return
        
    for i in range(1, n+1):
        s.append(i)
        dfs()
        s.pop()

dfs()

이전에 중복을 조사하던 부분만 빼주면 문제 없다!
실제 다른 풀이를 봐도 이와 굉장히 유사 or 똑같다.

다만 하나의 문제점이 있었는데, 처음에 저 if 문의 return을 적어주지 않았다. 그러니

RecursionError: maximum recursion depth exceeded while calling a Python object

가 나타났는데, 본 에러의 문제점은 파이썬이 정한 재귀의 깊이보다 더 깊어져서 나타나는 오류라고 한다. printreturn을 적어주지 않는다면, 아래의 for문을 계속 돌게 될텐데, 이 과정에서 생기는 문제점이다.
그러니 함수(코드)를 강제적으로 종료해주기 위해 꼭 적어주어야 한다.

profile
정말 알아?

0개의 댓글