๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/๐Ÿต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java] ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜

by carrot0911 2025. 4. 17.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/12945

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” F(0) = 0, F(1) = 1์ผ ๋•Œ, 1 ์ด์ƒ์˜ n์— ๋Œ€ํ•˜์—ฌ F(n) = F(n-1) + F(n-2) ๊ฐ€ ์ ์šฉ๋˜๋Š” ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด

  • 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

์™€ ๊ฐ™์ด ์ด์–ด์ง‘๋‹ˆ๋‹ค.

2 ์ด์ƒ์˜ n์ด ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ, n๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ 1234567์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • n์€ 2 ์ด์ƒ 100,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n return
3 2
5 5

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ํ”ผ๋ณด๋‚˜์น˜์ˆ˜๋Š” 0๋ฒˆ์งธ๋ถ€ํ„ฐ 0, 1, 1, 2, 3, 5, ... ์™€ ๊ฐ™์ด ์ด์–ด์ง‘๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public int solution(int n) {
        // ์ด์ „์˜ ์ด์ „ ์ˆ˜ (F(n-2))
        int num1 = 0;
        // ์ด์ „ ์ˆ˜ (F(n-1)), ์ฒ˜์Œ์€ F(1) = 1
        int answer = 1;
        // ํ˜„์žฌ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ ๊ณ„์‚ฐํ•œ ํšŸ์ˆ˜
        int count = 1;
        
        // count๊ฐ€ n์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
        while (count < n) {
            // num์— ์ด์ „์˜ ์ด์ „ ์ˆ˜ ์ €์žฅ (F(n-2))
            int num = num1;
            // num1์— ์ด์ „ ์ˆ˜ ์ €์žฅ F(n-1))
            num1 = answer;
            
            // ํ˜„์žฌ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ ๊ณ„์‚ฐ
            answer = (num + num1) % 1234567;
            
            // ๋‹ค์Œ ์ˆ˜ ์ง„ํ–‰
            count++;
        }
        
        // answer ๋ฐ˜ํ™˜
        return answer;
    }
}

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ์ƒ๊ฐํ•œ ๋ฐฉํ–ฅ

๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๊ณ„์† ๋ฐ”๊ฟ”์ฃผ๋ฉด์„œ ์ฃผ์–ด์ง„ ๊ฐ’๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
n์ด 100,000 ์ดํ•˜์ด๊ธฐ ๋•Œ๋ฌธ์— 1,234,567์œผ๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๋Š” ์ž๊ธฐ ์ž์‹ ์ด๋‹ค.
answer์— ๋‚˜๋จธ์ง€๋ฅผ ์ €์žฅํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. answer์—๋Š” ์ž๋™์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค.