glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
    • Languages (11)
      • JavaScript ๐Ÿ’› (3)
      • Python ๐Ÿ (4)
      • Java โ˜•๏ธ (3)
      • Swift ๐Ÿงก (1)
    • Computer_Science (1)
      • Computer_Network ๐Ÿ•ธ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring ๐Ÿ€ (1)
    • AI (2)
      • NLP ๐Ÿ—ฃ (1)
      • AI_Math โž— (1)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ โœŒ (1)
    • ์ƒ๊ฐ์ •๋ฆฌ โœ๐Ÿป (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ps
  • Python
  • Java
  • DP
  • Algorithm
  • bfs
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • ๋™์ ๊ณ„ํš๋ฒ•
  • boostcampaitech
  • binary search
  • mst
  • ์™„์ „ํƒ์ƒ‰
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • brute-force
  • Stack
  • c++
  • Baekjoon
  • BOJ
  • ์ด๋ถ„ํƒ์ƒ‰

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[BOJ] ๋ฐฑ์ค€ 10844 ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
Problem_Solving

[BOJ] ๋ฐฑ์ค€ 10844 ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)

2020. 3. 6. 18:33

์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ฌธ์ œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.


 

 

๐Ÿ’ฃ ๋ฌธ์ œ ์ดํ•ด

 

 

1. 45656 ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ์ž๋ฆฌ ์ˆ˜๊ฐ€ ์ธ์ ‘ํ•œ ์ž๋ฆฌ ์ˆ˜์™€ 1 ์ฐจ์ด๋‚  ๋•Œ, ๊ทธ ์ˆ˜๋ฅผ ๊ณ„๋‹จ ์ˆ˜ ๋ผ๊ณ  ํ•œ๋‹ค.

2. ์ž…๋ ฅ์œผ๋กœ 1~100 ์‚ฌ์ด์˜ ์ž์—ฐ์ˆ˜ N ์ด ์ฃผ์–ด์ง„๋‹ค.

3. N ์ž๋ฆฌ ์ž์—ฐ์ˆ˜ ์ค‘ ๊ณ„๋‹จ ์ˆ˜๊ฐ€ ์ด ๋ช‡ ๊ฐœ์ธ์ง€ ์ฐพ์•„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

 

 

 

๐Ÿ’ญ ํ’€์ด ๊ณผ์ •

 

 

N = 1 ์ธ ๊ฒฝ์šฐ, 1, 2, 3, 4, 5, 6, 7, 8, 9 ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋ฌธ์ œ์— ์ œ์‹œ๋œ ์กฐ๊ฑด์— ๋”ฐ๋ผ 0์€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.

 

N = 2 ์ธ ๊ฒฝ์šฐ, 10, 12, 21, 23, 32, 34, .... 98 ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

1 ~ 9 ์‚ฌ์ด ์ˆ˜๋ฅผ ์‹ญ์˜ ์ž๋ฆฌ๋กœ ํ•˜์—ฌ ์ผ์˜ ์ž๋ฆฌ๋Š” -1 ํ•œ ์ˆ˜ ๋˜๋Š” +1 ํ•œ ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ ํ™”์‹์œผ๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

dp[i][j] = dp[i+1][j-1] + dp[i+1][j+1]

 

i ๋Š” ์ž๋ฆฌ์ˆ˜ N ์„ ๋œปํ•˜๋Š” dp ๋ฐฐ์—ด์˜ ํ–‰์ด๊ณ  j ๋Š” ๊ทธ ์ˆ˜์˜ ๊ฐ€์žฅ ์šฐ์ธก์— ์œ„์น˜ํ•œ ์ˆ˜ 1~9 ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, i ๊ฐ€ 0 ์ธ ๊ฒฝ์šฐ๋Š” dp[i+1][j+1] ๋งŒ ๊ณ ๋ คํ•˜๋ฉฐ i ๊ฐ€ 9 ์ธ ๊ฒฝ์šฐ๋Š” dp[i+1][j-1] ๋งŒ ๊ณ ๋ คํ•œ๋‹ค.

0 ์ธ ๊ฒฝ์šฐ, -1 ์€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ 10 ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๊ณ 

9 ์ธ ๊ฒฝ์šฐ, ๊ทธ ์ด์ƒ์€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ 89 ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

 

์ž‘์„ฑ ์–ธ์–ด: C++

 

#include <cstdio>   // c ํ‘œ์ค€์ž…์ถœ๋ ฅ
#include <algorithm>  // std::fill_n
#define mod 1000000000

int dp[110][10] = {0, };

int sumOfStairs(int index){
    int sum = 0;
    
    for (int i = 2; i <= index; ++i) {
        for (int j = 0; j <= 9; ++j) {
            if (j == 0){
                dp[i][j] = dp[i-1][j+1];
            }else if (j == 9){
                dp[i][j] = dp[i-1][j-1];
            }else{
                dp[i][j] = (dp[i-1][j-1] + dp[i-1][j+1]) % mod;
            }
        }
    }
    
    // ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ N ์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜์˜ ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ
    for (int i = 1; i < 10; ++i) {
        sum = (sum + dp[index][i]) % mod;
    }
    
    return sum;
}

int main(){
    int nNumber;
    scanf("%d", &nNumber);
    
    // ํ•œ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๋œปํ•˜๋Š” 1๋ฒˆ ํ–‰์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”
    std::fill_n(dp[0]+10, 10, 1);
    
    printf("%d\n", sumOfStairs(nNumber));
    
    return 0;
}

 

 

 

 

๐Ÿ† ๋ฐฐ์šด ์ 

 

 

DP ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•˜๋ฉด์„œ ํŠน์ • ๊ฐ’์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ๋งŽ์ด ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

๋ชจ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ธ์–ด์˜จ ์‹์ด๋‹ค. (A + B) % M = (A % M + B % M) % M

 

๋งˆ์ง€๋ง‰์— ํŠน์ • ๊ฐ’์˜ ํ•ฉ์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค๋ฉด, ๊ณ„์‚ฐ ๊ณผ์ • ๋„์ค‘์— ๋‚˜๋ˆ„์–ด๋„ ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

๊ฐ’์ด ๋„ˆ๋ฌด ์ปค์„œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™๋‹ค๋ฉด, ๊ทธ๋•Œ๊ทธ๋•Œ ๋‚˜๋ˆ„์–ด์ฃผ๊ณ  ๋‹ค ๋”ํ•œ ๊ฐ’์„ ์ตœ์ข…์ ์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•ด๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 11057 ์˜ค๋ฅด๋ง‰ ์ˆ˜ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.09
์™œ ์ •๋‹ต์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ• ๊นŒ? - ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ  (0) 2020.03.06
[BOJ] ๋ฐฑ์ค€ 1699 ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.04
[BOJ] ๋ฐฑ์ค€ 11726 2xn ํƒ€์ผ๋ง / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.04
[BOJ] ๋ฐฑ์ค€ 1904 01ํƒ€์ผ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.04
    'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [BOJ] ๋ฐฑ์ค€ 11057 ์˜ค๋ฅด๋ง‰ ์ˆ˜ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    • ์™œ ์ •๋‹ต์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ• ๊นŒ? - ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ
    • [BOJ] ๋ฐฑ์ค€ 1699 ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    • [BOJ] ๋ฐฑ์ค€ 11726 2xn ํƒ€์ผ๋ง / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    glowing713
    glowing713

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”