코딩테스트

[프로그래머스] 피보나치 수_12945

라임온조 2023. 7. 21. 12:19

문제 및 코드

1. 생각

// 생각
    // 그냥 구현하면 될듯
// 구현
    // n번째 피보나치 수를 구하는 함수를 만들기
    // 위 함수의 결과를 1234567로 나눈 나머지를 리턴하기
    
재귀보다 메모이제이션이 낫다

2. 회고

  • n의 범위에 따른 피보나치 수열의 값을 고려하지 않고 무작정 재귀로 풀었더니 시간초과 오류가 났다. n이 엄청나게 큰 경우 그에 따라 피보나치 수열의 값도 엄청나게 커지는데 아마 그걸 int에 담을 수 없어서 1234567로 나눈 나머지를 저장해야 하지만 그걸 저장하는 부분을 재귀함수에 반영하지 않았다. 엄청 커지면 int, long으로도 표현 불가능한듯. 
  • 그래서.. 원래 풀었던 재귀함수에 1234567로 나눠 보려고 했는데  시간초과 계속 발생...
  • 다른 풀이 참고해서 풀었다

3. 기억

  • 피보나치의 경우 재귀로 풀 경우 숫자가 커질수록 반복 계산을 재귀 속에서 많이 가지게 되어 성능이 안 좋다고 한다. 따라서 반복문으로 하거나 메모이제이션을 사용하는 게 좋다. 그래서 나도 배열을 이용한 메모이제이션 풀이를 참고하여 그렇게 풀어보았다.

4. 체크

풀이 횟수 시간 정답 여부 참고 여부
1 25분   O