해결된 질문
작성
·
83
·
수정됨
답변 1
1
안녕하세요. 내꿈은프로틴부자님!
풀이에서 arr은 앞으로 갱신하며 저장해나갈 n번째 피보나치 수를 저장하는 리스트입니다.
arr = [-1] * (n + 2)
은 리스트를 선언 및 할당하는 코드인데요.
풀이하자면, -1 원소를 (n + 2) 크기만큼 채워 리스트를 생성하는 것을 의미합니다.
예를들어, arr = [-1] * 5
를 수행하면, arr에는 [-1,-1,-1,-1,-1]이 할당됩니다.
각 인덱스의 값을 -1 원소로 채운 이유는 각 인덱스가 피보나치수로 갱신됐는지 구분하기 위함인데요.
이는 피보나치수가 -1이 나올 수 없기에 -1로 남아있는 인덱스는 갱신이 안됐다는걸로 나타낼 수 있기 때문입니다.
리스트의 크기를 n+2로 잡은 이유는 리스트에 초기값 2개를 세팅하기 위해서입니다.
피보나치 수는 2개의 값을 더해가며 갱신하는 값인데요.
그러다보니 재귀적으로 갱신하기 위해서는 2개의 값이 필수적으로 필요합니다.
따라서 풀이 초반에 초기값 2개를 미리 세팅하려다보니, 리스트의 크기가 2개 이상 원소를 저장해야하는 크기가 되어야합니다.
n+2에서 n=0일 때, 리스트의 크기가 2를 만족함으로 n+2 크기를 준 것입니다.
또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.
감사합니다. :)
정말 감사합니다....! 한참을 고민했는데 깔끔히 해결되었습니다