문제 및 코드
1. 생각
// 생각
// 그냥 구현하면 될듯
// 구현
// n번째 피보나치 수를 구하는 함수를 만들기
// 위 함수의 결과를 1234567로 나눈 나머지를 리턴하기
재귀보다 메모이제이션이 낫다
2. 회고
- n의 범위에 따른 피보나치 수열의 값을 고려하지 않고 무작정 재귀로 풀었더니 시간초과 오류가 났다. n이 엄청나게 큰 경우 그에 따라 피보나치 수열의 값도 엄청나게 커지는데 아마 그걸 int에 담을 수 없어서 1234567로 나눈 나머지를 저장해야 하지만 그걸 저장하는 부분을 재귀함수에 반영하지 않았다. 엄청 커지면 int, long으로도 표현 불가능한듯.
- 그래서.. 원래 풀었던 재귀함수에 1234567로 나눠 보려고 했는데 시간초과 계속 발생...
- 다른 풀이 참고해서 풀었다
3. 기억
- 피보나치의 경우 재귀로 풀 경우 숫자가 커질수록 반복 계산을 재귀 속에서 많이 가지게 되어 성능이 안 좋다고 한다. 따라서 반복문으로 하거나 메모이제이션을 사용하는 게 좋다. 그래서 나도 배열을 이용한 메모이제이션 풀이를 참고하여 그렇게 풀어보았다.
4. 체크
풀이 횟수 |
시간 |
정답 여부 |
참고 여부 |
1 |
25분 |
|
O |