첫째로, 메모리 초과가 뜬 제출 기록을 보니 n을 입력받은 뒤에 n개의 수를 입력받지 않고 num[i] = i*i; 라는 알 수 없는 식으로 채우셨더군요. 그러니 2번째 줄에 첫 수로 입력이 아주 큰 수가 들어오면 그 수가 m에 저장되고 그 크기만큼 메모리를 할당받으려 하니 메모리 초과가 난 것이고요.
둘째로 이 코드가 시간 초과가 나는 이유는 48번째 줄의 while문을 반드시 탈출한다는 보장이 없기 때문입니다. 다음의 케이스를 넣어보시고 원인을 분석해보세요.
2
1 2
1
0
hayman42 5년 전
입문자라 질문 검색하면서 어떻게 아래 코드까지 왔는데 이해가 안되는 부분이 많아 도움 부탁드립니다. ㅠㅠ