강의로 돌아가기
이승윤

Java 시간초과/런타임 에러 나시는 분들..

재귀호출인 경우 StackOverflow가 나는 것 같습니다. 재귀를 반복문으로 바꾸었더니 잘 되네요. 참고하세요.

작성중인 코드―Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
  public int solution(int n) {
      int answer = 0;
      int i = 3;
      int ans_n_minus_2 = 1;
      int ans_n_minus_1 = 2;

      while (i < n) {
          answer = (ans_n_minus_2 + ans_n_minus_1) % 1000000007;
          ans_n_minus_2 = ans_n_minus_1;
          ans_n_minus_1 = answer;
          i++;
      }
      answer = (ans_n_minus_2 + ans_n_minus_1) % 1000000007;
      return answer;
  }



    /**
     * 재귀로 했더니 시간초과/런타임 에러 남..
     * 재귀 함수
     * n = 1 -> 1 (세로 한 가지)
     * n = 2 -> 2 (가로, 세로 두 가지)
     * n = 3 -> 3 (첫 번째 가로 -> n = 1 일때, 첫 번째 세로 -> n = 2 일때)
     * n = 4 -> 5 (n = 2 + n = 3)
     * n = sub_solution(n - 2) + sub_solution(n - 1)
     */
    public int sub_solution(int n) {
        if (n <= 2)
            return n;
        return (sub_solution(n - 1) + sub_solution(n - 2)) % 1000000007;
    }
}
  • 김성렬
    감사합니다! 김성렬 2019.03.27 17:02
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.