โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/Dynamic Programming

[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 10844๋ฒˆ. ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

2021. 1. 24. 19:25
๋ชฉ์ฐจ
  1. ์ž…๋ ฅ
  2. ์ถœ๋ ฅ
  3. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
  4. ํ•ด๊ฒฐ ๊ณผ์ •

www.acmicpc.net/problem/10844

 

10844๋ฒˆ: ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์šฐ์„  ๊ทœ์น™์„ ์ฐพ์„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

๊ธธ์ด๊ฐ€ 1์ธ ๊ณ„๋‹จ์˜ ์ˆ˜๋Š” ๋ช‡ ๊ฐœ๊ฐ€ ์žˆ์„๊นŒ?

1 2 3 4 5 6 7 8 9

๋‹ต์€ 9๊ฐœ

 

๊ทธ๋Ÿผ ๊ธธ์ด๊ฐ€ 2์ธ ๊ณ„๋‹จ์˜ ์ˆ˜๋Š”?

10 12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98 

๋‹ต์€ 17๊ฐœ

 

๊ทœ์น™์ด ๋ณด์ด๋Š”๊ฐ€? ๋ณด์ด์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

(๋ณธ์ธ๋„ ํ‘ธ๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ ธ์œผ๋‹ˆ... ์ด ๋ฌธ์ œ ๋งŽ์ด ์–ด๋ ค์› ์—ˆ๋‹ค. ์ ํ™”์‹์„ ์œ ๋„ํ•  ๊ทœ์น™์„ ์ฐพ์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค...)

 

๋ณด๊ธฐ ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ํ‘œ๋กœ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

 

index๋กœ ๋๋‚˜๋Š” ์ˆ˜๋ฅผ ์ €์žฅํ•  dp๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

โ‘  dp[0][0]์€ 0์œผ๋กœ ๋๋‚˜๋Š” 1์ž๋ฆฌ ์ˆ˜, dp[0][9]๋Š” 9๋กœ ๋๋‚˜๋Š” 1์ž๋ฆฌ ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

0 1 2 3 4 5 6 7 8 9
0 1 1 1 1 1 1 1 1 1

๊ธธ์ด 1 : 0 (0์€ ๊ธธ์ด 1์— ํฌํ•จ๋˜์ง€ ์•Š์ง€๋งŒ dp๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์„œ์ˆ ) / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9

 

โ‘ก dp[1][0]์€ 0์œผ๋กœ ๋๋‚˜๋Š” 2์ž๋ฆฌ ์ˆ˜, dp[1][9]๋Š” 9๋กœ ๋๋‚˜๋Š” 2์ž๋ฆฌ ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

0 1 2 3 4 5 6 7 8 9
1 1 2 2 2 2 2 2 2 1

๊ธธ์ด 2 : 10 / 21 / 12 32 / 23 43 / 34 54 / 45 65 / 56 76 / 67 87 / 78 98 / 89

 

โ‘ข dp[2][0]์€ 0์œผ๋กœ ๋๋‚˜๋Š” 3์ž๋ฆฌ ์ˆ˜, dp[2][9]๋Š” 9๋กœ ๋๋‚˜๋Š” 3์ž๋ฆฌ ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

0 1 2 3 4 5 6 7 8 9
1 1 2 2 2 2 2 2 2 1

๊ธธ์ด 3 : 210 / 101 121 321 / 212 232 432 / ... / 678 878 878 / 789 989

 

๊ทœ์น™์ด ๋ณด์ด์ง€ ์•Š๋Š”๊ฐ€?

 

i์˜ j ๊ฐ’์˜ ๊ฒฝ์šฐ i-1์˜ j-1๊ณผ j+1์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด i[2][8]์ด๋ฉด 8๋กœ ๋๋‚˜๋Š” 3์ž๋ฆฌ ์ˆ˜์ธ๋ฐ i[1][7]์˜ 67, 87 ๊ณผ i[1][9]์˜ 89 ๋’ค์— 8์ด ๋ถ™์–ด์„œ

678, 878, 898์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ ํ™”์‹์€ dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] ์ด๋‹ค.

ํ•˜์ง€๋งŒ dp[i][0]๊ณผ dp[i][9]์ธ ๊ฒฝ์šฐ๋ฅผ ์ฃผ์˜๊นŠ๊ฒŒ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์œ„์˜ ์ ํ™”์‹์„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ index๋ฅผ ๋„˜์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ฆ‰, ํ•ด๋‹น ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ ํ™”์‹์ด ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ทœ์น™์„ ์ฐพ์•„๋ณด๋ฉด

dp[i][0]์˜ ๊ฒฝ์šฐ dp[i-1][1], dp[i][9]์˜ ๊ฒฝ์šฐ dp[i-1][8]๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ตœ์ข…์ ์ธ ์ ํ™”์‹์€

dp[i][j] = dp[i-1][j+1] ( j == 0 )

                dp[i-1][j-1] + dp[i-1][j+1] ( 1 โ‰ค j โ‰ค 8 )

                dp[i-1][j-1] ( j == 9 ) 

๊ฐ€ ๋œ๋‹ค.

 

 

ํ•ด๊ฒฐ ๊ณผ์ •

์œ„์˜ ์ ํ™”์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฌธ์ œ์—์„œ 10์–ต์œผ๋กœ ๋‚˜๋ˆ ์ค€ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ 10์–ต์œผ๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.

 

์ตœ์ข…์ ์ธ ์ฝ”๋“œ๋Š” 

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„ > Dynamic Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 11053๋ฒˆ. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด  (0) 2021.01.25
[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 2156๋ฒˆ. ํฌ๋„์ฃผ ์‹œ์‹  (0) 2021.01.25
[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 1463๋ฒˆ. 1๋กœ ๋งŒ๋“ค๊ธฐ  (0) 2021.01.19
[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 2579๋ฒˆ. ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ  (0) 2021.01.14
[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 1932๋ฒˆ. ์ •์ˆ˜ ์‚ผ๊ฐํ˜•  (0) 2021.01.13
  1. ์ž…๋ ฅ
  2. ์ถœ๋ ฅ
  3. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
  4. ํ•ด๊ฒฐ ๊ณผ์ •
'โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/Dynamic Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 11053๋ฒˆ. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด
  • [๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 2156๋ฒˆ. ํฌ๋„์ฃผ ์‹œ์‹
  • [๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 1463๋ฒˆ. 1๋กœ ๋งŒ๋“ค๊ธฐ
  • [๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 2579๋ฒˆ. ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ
kodo_o
kodo_o
iOS ๊ฟ€์žผ!
kodo_o
๐ŸŽ๐Ÿ
kodo_o
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (149)
    • ๐Ÿ”จ ํ”„๋กœ์ ํŠธ (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • ๐Ÿ’ป ๊ฐœ๋ฐœ (63)
      • iOS (30)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Architecture (1)
      • ์˜ค๋Š˜์˜ ์‚ฝ์งˆ (7)
      • ์—๋Ÿฌ์™€์˜ ๋™์นจ (1)
    • โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„ (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • ๐Ÿ“š CS (6)
      • Operating System (6)
    • โ›น๏ธ ๋ผ์ดํ”„ (30)
      • 2020 ๊ฒจ์šธ๋ฐฉํ•™ ๋ชจ๊ฐ์ฝ”(๊ฐœ์ธ) (12)
      • 2021 ์—ฌ๋ฆ„๋ฐฉํ•™ ๋ชจ๊ฐ์ฝ”(๊ฐœ์ธ) (6)
      • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (1)
      • ํšŒ๊ณ  (10)

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

  • ํ™ˆ
  • ๊นƒํ—ˆ๋ธŒ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

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

hELLO ยท Designed By ์ •์ƒ์šฐ.
kodo_o
[๋™์  ๊ณ„ํš๋ฒ• 1] [C++] 10844๋ฒˆ. ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.