스택 메모리 제한은 문제에 주어진 메모리 제한과 동일합니다. 메모리 제한을 초과하지 않는 범위 내에서는 재귀를 몇 번이고 들어가도 됩니다.
다만 예외적으로, 파이썬과 같은 언어에서는 내부적으로 재귀 횟수에 제한이 있습니다. 이런 경우 제한을 풀 수 있는 방법을 사용하거나, 다른 언어를 사용해야 합니다.
9466번 - 텀 프로젝트
스택 메모리 제한은 문제에 주어진 메모리 제한과 동일합니다. 메모리 제한을 초과하지 않는 범위 내에서는 재귀를 몇 번이고 들어가도 됩니다.
다만 예외적으로, 파이썬과 같은 언어에서는 내부적으로 재귀 횟수에 제한이 있습니다. 이런 경우 제한을 풀 수 있는 방법을 사용하거나, 다른 언어를 사용해야 합니다.
네 메모리 제한은 스택, 힙, 정적 메모리를 모두 합친 것의 제한입니다. 스택 메모리에 따로 제한이 있지는 않다는 얘기였습니다.
재귀를 한 번 들어갈 때 레지스터의 값과 return address을 스택에 푸시하니 사용하는 변수의 개수에 따라 스택에 어느 정도 쌓이는지를 유추할 수 있기는 한데, 컴파일러가 최적화를 어떻게 하느냐에 따라서 사용하는 레지스터의 개수가 달라지기 때문에 정확한 예측은 어렵습니다.
> 스택 메모리 제한은 문제에 주어진 메모리 제한과 동일합니다.
위 언급에 대한 오피셜 정보가 있을까요? 최근 백준 서버 node가, stack-size=984kb (옵션 없을 때 64bit 디폴트값) 인 것으로 추정되는 상황을 경험했습니다.
https://www.acmicpc.net/help/l...
위 백준 공식 정보에 따르면 `node main.js`로 코드를 실행하는데, 이런 식으로 `--stack-size` 파라미터를 주지 않을 경우 스택 메모리 제한이 실제로 (꽤 낮게) 존재하는 것 같습니다.
만약 cubelover_dev님 말씀이 사실이라면 node 쪽 실행 조건이 개선되어야 하는 상황이라고 생각됩니다.
댓글을 작성하려면 로그인해야 합니다.
bbayu 5년 전
예전에 문제를 풀다가 depth가 2만정도 이상가니 스택오버플로우가 발생하는걸 알았습니다.
지금 이 문제에서도 n이 10만이므로 dfs를 돌리면 10만까지 파고들 수 있기 때문에 스텍오버플로우가 발생할 것 같아서
문제를 읽었을때 dfs로 하면 안되겠다 라는 생각을 하였습니다.
그런데 답을 보니 dfs로 구현을 하는것이고요.. 음? 재귀를 구현할떄 depth를 어느정도의 기준을 두고 생각해야할까요????