inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1 - L 재귀로 푸는 풀이

재귀 풀이 시간초과 질문

해결된 질문

86

대식

작성한 질문수 12

0

안녕하세요. 저는 해당 문제 아래와 같이 풀었는데 시간초과가 납니다. 선생님 풀이랑 로직은 비슷한거같은데 혹시 어떤 부분이 문제일까요/

http://boj.kr/3727721ddb6347ceb1f0431851c1cf8c 

c++ 코딩-테스트

답변 2

0

큰돌

안녕하세요 대식님 ㅎㅎ

    for(int i = idx + 1; i<n; i++){
        res = res + vec[i];
        dfs(i,res,lv+1);

이렇게 재귀함수를 작성하면 시간복잡도가 어느정도일까요?

n 곱하기 n - 1 ... 이렇게 되지 않을까요? n의 최대범위는 15,000 이기 때문에 시간복잡도가 너무 크게 됩니다. 이 때문에 시간초과가 나는 것 같습니다.

 


 

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

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

감사합니다.

강사 큰돌 올림.


0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 대식님.

재귀 알고리즘을 사용한 풀이에서 시간 초과가 발생하는 주요 원인 중 일부와 해결 방법에 대한 조언을 드리겠습니다.

  1. 중복 탐색: 재귀 호출에서 동일한 상태를 여러 번 탐색하게 되면 시간 초과가 발생할 수 있습니다. 이를 해결하기 위해 메모이제이션(Memoization)을 도입하여 이미 계산된 결과를 저장하고 재사용하는 것이 좋습니다.

  2. 베이스 케이스 미흡: 베이스 케이스 조건이 명확하지 않으면 불필요한 깊은 탐색이 일어날 수 있습니다. 따라서 확실한 종료 조건을 설정하는 것이 중요합니다.

  3. 연산 복잡도: 각 재귀 호출 내의 연산 비용이 크다면 이를 줄이는 방법도 고려해야 합니다. 불필요한 변수 선언이나 복잡한 연산을 줄여야 합니다.

기존에 비슷한 문제와 관련하여 시간 초과가 발생했던 사례에 대해선 다음과 같은 답변이 있었습니다. 이 질문에서 다른 수강생분들도 비슷한 문제를 해결하였으니 참고해 보시길 추천드립니다.

해당 링크들을 통해 시간 초과 해결에 필요한 추가 힌트를 얻길 바라겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

코딩살구클럽

0

2

1

코딩살구클럽 문의

0

21

2

코딩살구클럽 승인

0

27

2

DP 경우의 수 설명이 이해가 되지 않습니다.

0

32

2

3-F 채점 관련 질문

0

26

1

BFS, DFS 활용이 되는 상황에서의 방향성

0

32

2

코딩살구클럽 승인

0

41

2

코딩살구클럽승인

0

34

3

코딩살구클럽 승인

0

50

2

3-D 관련 질문

0

35

2

코살구 회원가입 문의

0

44

2

코살구 로그인 문제

0

65

2

3-A 문제 풀이 관련 질문

0

56

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

40

2

코딩 살구 클럽 접속 및 사용방법 문의

0

62

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

64

2

코딩살구클럽 로그인문제

0

78

3

코딩 살구 클럽 로그인 문제

0

84

2

2-J 채점관련 질문

0

65

3

코딩 살구 클럽 Python 지원 가능 여부

0

77

1

살구클럽 아이디 없음 문제

0

76

1

1-O 코딩살구클럽 채점관련 질문

0

60

2

히든 테스트 케이스가 사라졌습니다

0

57

1