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

곡지사항

인기 κΈ€

νƒœκ·Έ

  • bfs
  • 완전탐색
  • 카카였 기좜
  • λ™μ κ³„νšλ²•
  • 2019 카카였 개발자 겨울 인턴십
  • mst
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • Java
  • binary search
  • Stack
  • c++
  • Baekjoon
  • BOJ
  • Python
  • 이뢄탐색
  • brute-force
  • DP
  • boostcampaitech
  • ps
  • Algorithm

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
glowing713

Frontend-Deep-Dive

[BOJ] λ°±μ€€ 2193 이친수 / 동적 κ³„νšλ²•(Dynamic-Programming)
Problem_Solving

[BOJ] λ°±μ€€ 2193 이친수 / 동적 κ³„νšλ²•(Dynamic-Programming)

2020. 3. 4. 13:18

이미지λ₯Ό ν΄λ¦­ν•˜λ©΄ 문제 μ‚¬μ΄νŠΈλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.


 

πŸ’£ λ¬Έμ œ 이해

 

 

1. 첫 번째 μžλ¦¬κ°€ 1둜 μ‹œμž‘ν•˜λŠ” μˆ˜μ΄λ‹€.

2. 1κ³Ό 1이 인접할 수 μ—†λ‹€κ³  ν–ˆμœΌλ‹ˆ, 두 번째 μžλ¦¬λŠ” 0 이닀.

3. N 자릿수 μ€‘μ—μ„œ μ΄λŸ¬ν•œ κ·œμΉ™μ„ λ§Œμ‘±ν•˜λŠ” 수의 개수λ₯Ό ꡬ해야 ν•œλ‹€.

 

동적 κ³„νšλ²•(Dynamic Programming) 방식을 μ‚¬μš©ν–ˆλ‹€.

 

 

 

πŸ’­ 풀이 κ³Όμ •

 

 

N = 1 인 κ²½μš°λŠ” 1 ν•˜λ‚˜λ°–μ— μ—†λ‹€. => 1

 

N = 2 인 κ²½μš°λŠ” 10 ν•˜λ‚˜λ°–μ— μ—†λ‹€. => 1

 

N = 3 인 κ²½μš°λŠ” 100, 101 두 가지이닀. => 2

 

N = 4 인 κ²½μš°λŠ” 1000, 1001, 1010 μ„Έ 가지이닀. => 3

 

N = 5 인 κ²½μš°λŠ” 10000, 10001, 10010, 10100, 10101 λ‹€μ„― 가지이닀. => 5

 

 

 

 

이 κ·œμΉ™μ„ ν† λŒ€λ‘œ λ°œκ²¬ν•  수 μžˆλŠ” 것은

 

1) λ°”λ‘œ μ•ž μΌ€μ΄μŠ€μ— 따라 λ‹€μŒ μΌ€μ΄μŠ€κ°€ μ •ν•΄μ§„λ‹€κ³  λ³Ό 수 μžˆλ‹€.

N = 3 일 λ•Œμ˜ 100μ—μ„œ 뒀에 0 λ˜λŠ” 1 을 뢙일 수 있고 101 μ—μ„œ 뒀에 0 을 뢙일 수 μžˆλ‹€. 이것이 N = 4 일 λ•Œμ˜ μ’…λ₯˜

 

2) 개수의 λ³€ν™”κ°€ ν”Όλ³΄λ‚˜μΉ˜μ™€ λ™μΌν•˜λ‹€.

 

 

 

이 두 κ°€μ§€ λ°©μ‹μœΌλ‘œ μ†ŒμŠ€μ½”λ“œ μž‘μ„±μ„ ν•΄λ³΄μ•˜λ‹€.

 

 

 

<1 번 μ†ŒμŠ€μ½”λ“œ>

 

μž‘μ„± μ–Έμ–΄: C++

 

#include <cstdio>

long dp[100][2] = {0, };    // 0 번째 열이 0으둜 λλ‚˜λŠ” 경우, 1 번째 열이 1둜 λλ‚˜λŠ” 경우

void solve(int num){
    dp[1][0] = 0; dp[1][1] = 1;
    for (int i = 2; i <= num; ++i) {
        dp[i][0] = dp[i-1][0] + dp[i-1][1];
        dp[i][1] = dp[i-1][0];
    }
}

int main(){
    int nCount = 0;
    scanf("%d", &nCount);
    
    solve(nCount);
    printf("%ld\n", dp[nCount][0] + dp[nCount][1]);
    return 0;
}

 

 

 

직접 λͺ‡ κ°€μ§€ μΌ€μ΄μŠ€λ₯Ό 적어보닀보면 λ°œκ²¬ν•˜κ²Œ λ˜λŠ” κ·œμΉ™μ΄ μžˆλ‹€.

 

0 으둜 λλ‚˜λŠ” μˆ˜λŠ” κ·Έ λ‹€μŒ μΌ€μ΄μŠ€μ— 0 으둜 λλ‚˜λŠ” 수, 1 둜 λλ‚˜λŠ” 수 두 κ°€μ§€λ₯Ό λ§Œλ“€ 수 μžˆλ‹€λŠ” 것이고,

1 둜 λλ‚˜λŠ” μˆ˜λŠ” κ·Έ λ‹€μŒ μΌ€μ΄μŠ€μ— 0 으둜 λλ‚˜λŠ” 수 ν•œ κ°€μ§€λ§Œ λ§Œλ“€ 수 μžˆλ‹€λŠ” 것이닀.

 

이λ₯Ό 톡해 점화식을 μž‘μ„±ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

 

dp[i][0] 은 i 자리 μˆ«μžμ—μ„œ 0 으둜 λλ‚˜λŠ” 수의 개수이고 dp[i][1] 은 i 자리 μˆ«μžμ—μ„œ 1 둜 λλ‚˜λŠ” 수의 κ°œμˆ˜μ΄λ‹€.

 

dp[i][0] = dp[i-1][0] + dp[i-1][1]  =>  0 으둜 λλ‚˜λŠ” μˆ˜μ™€ 1 둜 λλ‚˜λŠ” 수 λͺ¨λ‘ κ³΅ν†΅μ μœΌλ‘œ 0 으둜 λλ‚˜λŠ” 수λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

dp[i][1] = dp[i-1][0]  => 0 으둜 λλ‚˜λŠ” 수만 1 둜 λλ‚˜λŠ” 수λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

 

 

 

<2 번 μ†ŒμŠ€μ½”λ“œ>

 

μž‘μ„± μ–Έμ–΄: C++

 

#include <cstdio>

long dp[100] = {0, };

void solve(int num){
    dp[1] = dp[2] = 1;
    for (int i = 3; i <= num; ++i) {
        dp[i] = dp[i-2] + dp[i-1];
    }
}

int main(){
    int nCount = 0;
    scanf("%d", &nCount);
    
    solve(nCount);
    printf("%ld\n", dp[nCount]);
    return 0;
}

 

 

ν”Όλ³΄λ‚˜μΉ˜ 방식 풀이이닀.

 

 

 

πŸ† 배운 점

 

dp 문제 쀑 κ°„λ‹¨ν•œ νŽΈμ— μ†ν•˜λŠ” λ¬Έμ œμ΄λ‚˜,

두 κ°€μ§€ ν’€μ΄λ‘œ μ ‘κ·Όν•  수 μžˆλŠ” 것을 μ‹œλ„ν•΄λ³΄μ•„μ„œ 개인적으둜 μ’€ λΏŒλ“―ν•œ ν’€μ΄μ˜€λ˜ 것 κ°™λ‹€

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ] λ°±μ€€ 11726 2xn 타일링 / 동적 κ³„νšλ²•(Dynamic-Programming)  (0) 2020.03.04
[BOJ] λ°±μ€€ 1904 01타일 / 동적 κ³„νšλ²•(Dynamic-Programming)  (0) 2020.03.04
[BOJ] λ°±μ€€ 2294 동전 2 / 동적 κ³„νšλ²•(Dynamic-Programming)  (0) 2020.03.03
[BOJ] λ°±μ€€ 9465 μŠ€ν‹°μ»€ / 동적 κ³„νšλ²•(Dynamic-Programming)  (0) 2020.03.02
[BOJ] λ°±μ€€ 1463 1둜 λ§Œλ“€κΈ° / 동적 κ³„νšλ²•(Dynamic-Programming)  (0) 2020.02.27
    'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [BOJ] λ°±μ€€ 11726 2xn 타일링 / 동적 κ³„νšλ²•(Dynamic-Programming)
    • [BOJ] λ°±μ€€ 1904 01타일 / 동적 κ³„νšλ²•(Dynamic-Programming)
    • [BOJ] λ°±μ€€ 2294 동전 2 / 동적 κ³„νšλ²•(Dynamic-Programming)
    • [BOJ] λ°±μ€€ 9465 μŠ€ν‹°μ»€ / 동적 κ³„νšλ²•(Dynamic-Programming)
    glowing713
    glowing713

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”