작성
·
300
·
수정됨
0
http://boj.kr/2f84a9840da946a29571c22e8f3ad14e
위의 코드는 2%에서 시간초과가 나는 코드입니다.
저는 처음에 큰돌님과 같이 등차수열의 합, 구간만큼 빼줘서 RET에 더해준다. 를 생각을 못했고
그냥 계속 ret++을 해줬었습니다.
해당 코드가 문제가 되는 점은
중복인지 찾는 isUnique 라는 함수 때문이겠죠..?
제한된 메모리에서 for문의 O(n)이
10만, 9.9만...이렇게 연속으로 나올 수도 있어서 시간초과가 걸리는 걸까요?
선생님의 로직과 제 로직의 큰 차이점은 큰돌님은 '이전 것이 중복이 아니면 더이상 생각을 안해준다'
이고 저는 '이전 것과 새로 들어온 것을 포함한 구간을 계속해서 중복인지 아닌지 계산한다'
이런 점에서 오는 로직의 차이인 것 같아서 질문 드립니다..!
답변 2
0
0
안녕하세요 자르트님 ㅎㅎ
제한된 메모리에서 for문의 O(n)이
10만, 9.9만...이렇게 연속으로 나올 수도 있어서 시간초과가 걸리는 걸까요?
>> 네 맞습니다. 근데 이거는 ~~해서 시간초과가 난다. 는 절대적인 명제는 없습니다. 항상 "불필요한 것은 무엇이지? 이렇게 도전해볼까?" 라고 생각해봐야 합니다.
내가 짠 로직 제출
시간초과 등장
어떤 부분이 "불필요할까?"
이렇게 생각하는게 중요합니다. 처음부터 효율적인 코드를 짜는 것은 저도 드뭅니다.
선생님의 로직과 제 로직의 큰 차이점은 큰돌님은 '이전 것이 중복이 아니면 더이상 생각을 안해준다'
이고 저는 '이전 것과 새로 들어온 것을 포함한 구간을 계속해서 중복인지 아닌지 계산한다'
이런 점에서 오는 로직의 차이인 것 같아서 질문 드립니다..!
>> 네 맞습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.