lws_kahn   2년 전

앞 부분의 주석 처리된 코드는 시간 초과,

뒷 부분의 주석 처리되지 않은 코드는 맞았습니다를 받았습니다.

저는 보통 주석 처리된 코드의 스타일로 문제를 푸는 편인데

알고리즘은 달라진 게 없이 스타일만 바꿨을 뿐인데 통과되는 이유를 알 수 있을까요?

lws_kahn   2년 전

두 코드 스타일 모두 빠른 입력을 사용했습니다.

tkdgus0782   2년 전

윗 코드는 

for i in range(N):
for j in range(N):
dp[i+1][j+1] = dp[i][j+1] + dp[i+1][j] - dp[i][j] + arr[i][j]


부분이 m 번 반복되고,

아래 부분은 1번만 실행되는 차이가 있는 것 같네용


이러면 o(n2)인 아랫 코드와는 달리 윗코드는 o(n3)이 되서 시간초과가 되는게 아닌가 싶습니다, 

lws_kahn   2년 전

저걸 놓치고 있었다니...! 

다시 보니까 주석 처리된 윗 코드는 dp배열을 M번 다시 만드느라 O(M*N*N)이 되어버렸네요.

너무 단순한 실수에 부끄러워지기까지 합니다. 역시 코드 스타일의 차이가 아니었던걸로...ㅋㅋㅋㅋㅋ

감사합니다^^

댓글을 작성하려면 로그인해야 합니다.