[codeup] 1905 : (재귀함수) 1부터 n까지 합 구하기

SUNGJIN KIM·2022년 3월 12일
0

CODEUP

목록 보기
21/76
post-thumbnail

문제

https://codeup.kr/problem.php?id=1905

정수 n이 입력으로 들어오면 1부터 n까지의 합을 구하시오.

이 문제는 반복문 for, while 등을 이용하여 풀수 없습니다.

입력

입력으로 자연수 n이 입력된다. (1<=n<=10,000)

입력 예시

100

출력

1부터 n까지의 합을 출력한다.

출력 예시

5050

문제 풀이

처음에 문제를 풀었을때, 아래와 같은 방법으로 풀었을때 답이 나오길래 진행했는데
하나의 테스트케이스에서 막혔다.

case 01:
input = 12345

def total_sum(n):
    if n <= 1:
        return 1
    return total_sum(n-1) + n

print(total_sum(int(input())))
12345
Traceback (most recent call last):
  File "p1905.py", line 6, in <module>
    print(total_sum(int(input())))
  File "p1905.py", line 4, in total_sum
    return total_sum(n-1) + n
  File "p1905.py", line 4, in total_sum
    return total_sum(n-1) + n
  File "p1905.py", line 4, in total_sum
    return total_sum(n-1) + n
  [Previous line repeated 995 more times]
  File "p1905.py", line 2, in total_sum
    if n <= 1:

문제는 맞는 것 같은데 왜 안되는지 확인해보니 케이스 자체에 오류가 있었다.

DFS,BFS 문제를 풀다보면 C에선 잘돌아가던 알고리즘이 파이썬에서는 런타임에러가 뜨는 경우가있다.
기본적인 허용치가 C보다 낮은거같은데 이럴때에는 재귀의 깊이를 따로 지정해주면 된다.

import sys
sys.setrecursionlimit(10**N) # 10^N 까지 늘려준다

이거때문에 문제수식에 오류가 있나 한참 살펴봤다.ㅜ

소스 코드

import sys

sys.setrecursionlimit(10**5)

def total_sum(n):
    if n <= 1:
        return 1
    return total_sum(n-1) + n

print(total_sum(int(input())))
profile
#QA #woonmong

0개의 댓글