전 백만까지는 일반 배열을 쓰는데
이번 알고리즘 예선 중,고 부분을 풀어보는 과정에서
중등부 1번문제였나.
배열크기를 200,000 x 13가 멕시멈인 문제를 발견함요.
저는 그래서 당연히 '아 배열로 못잡겠구나'하고 백터로 풀었는데
풀이를 보니 3백만까지 잡을 수 있더라구요 ㅎㄷㄷ..
그래서 정확하진 않지만 비쥬얼이나 코드블럭에서는 안됬던것같은데..
제 착각인가요? 헷갈리네요.. 어디까지 잡을 수 있나욘 ??
전 백만까지는 일반 배열을 쓰는데
이번 알고리즘 예선 중,고 부분을 풀어보는 과정에서
중등부 1번문제였나.
배열크기를 200,000 x 13가 멕시멈인 문제를 발견함요.
저는 그래서 당연히 '아 배열로 못잡겠구나'하고 백터로 풀었는데
풀이를 보니 3백만까지 잡을 수 있더라구요 ㅎㄷㄷ..
그래서 정확하진 않지만 비쥬얼이나 코드블럭에서는 안됬던것같은데..
제 착각인가요? 헷갈리네요.. 어디까지 잡을 수 있나욘 ??
메모리 제한 살펴보면 될듯? 300만*int4바이트/10^6하면 12메가바이트라서 왠만하면 다 가능해보이는데
스택에 잡으면 터질 수 있음
함수 내부에 변수를 선언하면 변수가 스택 영역에 들어감. 근데 일반적으로는 링커가 스택 영역에 큰 배열따위 잡지 않을거라고 예상하기 때문에 스택영역은 비교적 적은 메모리만 할당되어 있음. (VS기준으로 1메가) 하지만 PS에서는 스택 힙 가리지 않고 다 합쳐서 메모리제한이 안넘으면 그만이기 때문에 니 컴퓨터에선 스택이 터지는 코드도 돌아가는 거임. 그래서 해결책은 그냥 배열을 전역변수로 잡아버리던가 링커설정 조금만 만져주면 됨 근데 배열을 전역변수로 잡아도 가끔씩 재귀함수 깊게 돌릴때 스택 터질수 있으니까 링커설정을 만져주는 게 나음