인프런 커뮤니티 질문&답변

자르트님의 프로필 이미지
자르트

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

5-H

5-H 재질문

작성

·

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만...이렇게 연속으로 나올 수도 있어서 시간초과가 걸리는 걸까요?

>> 네 맞습니다. 근데 이거는 ~~해서 시간초과가 난다. 는 절대적인 명제는 없습니다. 항상 "불필요한 것은 무엇이지? 이렇게 도전해볼까?" 라고 생각해봐야 합니다.

  1. 내가 짠 로직 제출

  2. 시간초과 등장

  3. 어떤 부분이 "불필요할까?"

이렇게 생각하는게 중요합니다. 처음부터 효율적인 코드를 짜는 것은 저도 드뭅니다.

 

  • 선생님의 로직과 제 로직의 큰 차이점은 큰돌님은 '이전 것이 중복이 아니면 더이상 생각을 안해준다'

    이고 저는 '이전 것과 새로 들어온 것을 포함한 구간을 계속해서 중복인지 아닌지 계산한다'

    이런 점에서 오는 로직의 차이인 것 같아서 질문 드립니다..!

>> 네 맞습니다.

 

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


자르트님의 프로필 이미지
자르트

작성한 질문수

질문하기