코테 연습 with Kotlin - 3

아이모·2022년 9월 30일
0

코테

목록 보기
3/15

오늘 푼 문제는 프로그래머스에 있는 LEVEL 2 피보나치 수 이다.

문제는 링크에서 확인 가능하다 (https://school.programmers.co.kr/learn/courses/30/lessons/12945#)

처음 문제를 접했을 때 1234567로 나누라는 것을 보고 아 정수의 범위를 생각하면서 풀어라고 준 문제구나라고 생각하고 재귀로 풀었다가 시간초과가 났다.
재귀의 단점인 연산속도가 느린 것 때문인 듯하다.
그래서 for문이나 꼬리재귀를 사용하여 풀어야겠다라고 생각하여 for문을 이용하여 풀었다.(구현이 더 쉬워서..)

class Solution {
    fun solution(n: Int): Int {
        var answer = 0
        var fivoArr = Array<Int>(n+1, {0})
        fivoArr[0] = 0;
        fivoArr[1] = 1;
        fivoArr[2] = 1;
        for(i : Int in 3..n){
            fivoArr[i] = (fivoArr[i-1] + fivoArr[i-2]) %1234567
        }
        answer = fivoArr.get(n)
        return answer
    }
   
}

문제를 다 푼 후 다른 사람들은 어떻게 풀었는지 찾아보다가
(A + B) % C = {(A % C) + (B % C)} % C라는 것을 알게 되었다.
자료형의 크기에 제한이 있는 언어의 경우 위와 같은 방법으로 풀어야 하는 것 같다.

profile
데이터로 보는 실력

0개의 댓글