매번 합을 구하는 방식으로는 시간 내에 해결하기가 어려울 것 같습니다.
11441번 - 합 구하기
매번 합을 구하는 방식으로는 시간 내에 해결하기가 어려울 것 같습니다.
위와 같은 단순한 코드도 10억 번을 반복하면 생각보다 제법 오랜 시간이 필요합니다. (제 컴퓨터에서는 2.5~3.5초 정도 걸리네요)
문제에서 데이터(N)가 최대 10만개, 질의(M)의 수가 최대 10만개라고 했고.. 최악의 경우 매 질의마다 배열 전체 범위 (0~99999)가 입력될 수도 있기때문에
작성하신 솔루션의 경우, M개의 질의마다 N번의 덧셈을 수행하기 때문에 일지매님이 언급해주신 Big-O표기법으로 시간복잡도를 표현하면 O(MN)이 됩니다.
단순히 10억번(10^9)의 덧셈을 수행하는데 3초 정도가 걸리는데, MN번(10^10)의 덧셈을 수행하는데는 더 많은 시간이 걸리겠죠.
또, 상수시간( O(1) )의 연산도 단순한 연산이 아닌 조금 더 시간이 필요한 연산(곱셉, 나눗셈, 함수호출..)이 있을수도 있고, 연산 자체가 많이 포함되어 있을수도 있습니다.
정석적인 방법은 아니지만, 작성한 솔루션을 Big-O로 표현하여 대략적으로 계산한 값에 대해, '1억 == 1초'로 생각하고 문제를 풀면 본인이 작성한 코드가 주어진 시간제한 안에 수행이 가능할지 얼추.. 예측해 볼 수 있습니다.댓글을 작성하려면 로그인해야 합니다.
onlyhim 7년 전
자꾸 시간초과 / 런타임에러 가 뜨는데
해결방법좀 알수있을까요??ㅠㅠ