๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[Algorithm/Java][LeetCode] 70. Climbing Stairs

๋ฐ˜์‘ํ˜•

[LeetCode] 70. Climbinh Stairs

https://leetcode.com/problems/climbing-stairs/

๋ฌธ์ œ์ ‘๊ทผ

์ฒ˜์Œ์—๋Š” ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•ด์„œ ์ œ์ถœ์„ ํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค.
๊ทธ๋ž˜์„œ DP ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ณด์•˜๋‹ค.
DP ๋ฐฉ์‹์œผ๋กœ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ ํ™”์‹?์„ ๋ฐœ๊ฒฌํ•ด์•ผ ํ•œ๋‹ค. ๋ญ”๊ฐ€ ๊ต‰์žฅํžˆ ์–ด๋ ค์›Œ ๋ณด์ด์ง€๋งŒ ๊ฐ‘์ž๊ธฐ ๊ฐ์ด ์žกํžŒ๋‹ค.(๊ทœ์น™์„ ์ฐพ๋Š” ๋Š๋‚Œ?)
๊ณ„๋‹จ์€ ํ•œ๋ฒˆ์— 1์นธ ๋˜๋Š” 2์นธ์„ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด 1๋ฒˆ์งธ ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐ€๋ ค๋ฉด 0๋ฒˆ์งธ์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  2๋ฒˆ์งธ ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” 0๋ฒˆ์งธ๊ฑฐ๋‚˜ 1๋ฒˆ์งธ ๊ณ„๋‹จ์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.
๋˜, 3๋ฒˆ์งธ ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” 1๋ฒˆ์งธ๊ฑฐ๋‚˜ 2๋ฒˆ์งธ ๊ณ„๋‹จ์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ n๋ฒˆ์งธ ๊ณ„๋‹จ์„ ์˜ค๋ฅด๊ธฐ์œ„ํ•ด์„œ๋Š” n-1๋ฒˆ์งธ์™€ n-2๋ฒˆ์งธ ๊ณ„๋‹จ์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•˜๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด n-1๋ฒˆ์งธ ๊ณ„๋‹จ๊ณผ n-2๋ฒˆ์งธ ๊ณ„๋‹จ์— ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ•ฉ์นœ ๊ฐ’์ด n๋ฒˆ์งธ ๊ณ„๋‹จ์— ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜์ธ๊ฒƒ์ด๋‹ค.

Code

class Solution {

    public int climbStairs(int n) {
        if(n<=2) return n;
        int[] step = new int[n+1];
        step[1] = 1; // ์ฒซ๋ฒˆ์งธ ๊ณ„๋‹จ์€ ๋ฐฉ๋ฒ• 1๊ฐœ
        step[2] = 2; // ๋‘๋ฒˆ์งธ ๊ณ„๋‹จ์€ ๋ฐฉ๋ฒ• 2๊ฐœ
        for(int i = 3; i<=n; i++){
            // i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ๊ธฐ ์œ„ํ•ด์„œ๋Š” i-1๋ฒˆ์งธ์™€ i-2๋ฒˆ์งธ ๊ณ„๋‹จ์—์„œ ์™€์•ผํ•œ๋‹ค.
            step[i] = step[i-1]+step[i-2];
        }
        return step[n];
    }
}

์–ด๋ ค์› ๋˜ ์  / ๋ฐฐ์šด ์  / ๋Š๋‚€ ์ 

์ ํ™”์‹์ด๋ผ๊ณ  ํ•ด์„œ ์–ด๋ ค์›Œ ๋ณด์ด์ง€๋งŒ ์•ฝ๊ฐ„ ๊ทœ์น™ ์ฐพ๋Š” ๋Š๋‚Œ์ด๋‹ค.
์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๋ฐฑ์ค€์—์„œ๋„ ๋ช‡๋ฒˆ ๋ด์„œ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์ ํ™”์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ฒซ๋ฒˆ์งธ, ๋‘๋ฒˆ์งธ ๊ณ„๋‹จ์ฒ˜๋Ÿผ ๋‚ฎ์€ ๊ณ„๋‹จ์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€๋งŒ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ ์ง€๊ธฐ๋•Œ๋ฌธ์— ๊ทœ์น™์„ ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํ’€๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๋ฐ˜์‘ํ˜•