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())))