항해99/99club1기TIL

[99club/TIL] 2주차 - 화요일 TIL(Today I Learned)

delay100 2024. 4. 2. 23:19
728x90
반응형
SMALL

안녕하세요. delay100 입니다!

오늘의 TIL은 간단합니다.


미들러 문제

피보나치 수 (https://school.programmers.co.kr/learn/courses/30/lessons/12945)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제에 나와있 듯 피보나치 값은 아래와 같습니다.

F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5

그런데 문제를 보면 n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴해야합니다.

아래의 코드가 핵심인데,

fibo[i] = (fibo[i-1] + fibo[i-2]) % 1234567;

fibo 값을 그 대로 넣는 것이 아니라 1234567로 나눈 나머지값을 fibo에 저장합니다.

n  | f(n)  | f(n)%1234567
29	514229	514229
30	832040	832040
31	1346269	341274
32	2178309	750825
33	3524578	933839
34	5702887	800971
35	9227465	892622
36	14930352 409970

이렇게 나눠서 저장하지 않으면 f(n)이 금세 int형의 크기를 넘어가게 됩니다.

따라서 이렇게 나머지 값을 넣어서 계산합니다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        int[] fibo = new int[100001];
        
        fibo[0] = 0;
        fibo[1] = 1;
        
        for(int i=2; i<(n+1); i++) {
            fibo[i] = (fibo[i-1] + fibo[i-2]) % 1234567;    
        }
        
        answer = fibo[n];
        
        return answer;
    }
    
}

 


+ 비기너 문제

음양 더하기 (https://school.programmers.co.kr/learn/courses/30/lessons/76501)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

+ 챌린저 문제

택배상자 (https://school.programmers.co.kr/learn/courses/30/lessons/131704)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

728x90
반응형
LIST