b12852. 1๋กœ ๋งŒ๋“ค๊ธฐ 2

2025. 4. 14. 18:06ยทAlgorithm & Data Structures/BOJ

https://www.acmicpc.net/problem/12852

 

 

 

๐Ÿ“Œ ์ž๋ฐ”(Java)๋กœ ํ‘ธ๋Š” 1๋กœ ๋งŒ๋“ค๊ธฐ 2 - ๋ฐฑ์ค€ 12852 ๐Ÿ”ข

์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜ + ๊ฒฝ๋กœ ์ถ”์ ๊นŒ์ง€ ํ•˜๋Š” DP ๋ฌธ์ œ!

 


๐Ÿ”Ž ๋ฌธ์ œ ๊ฐœ์š”

 

๋ฐฑ์ค€ 12852๋ฒˆ - 1๋กœ ๋งŒ๋“ค๊ธฐ 2 ๋ฌธ์ œ๋Š”

์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,

1๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค:

 

  1. X → X / 3 (3์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์งˆ ๋•Œ๋งŒ)
  2. X → X / 2 (2๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์งˆ ๋•Œ๋งŒ)
  3. X → X - 1

 

์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ 
๊ทธ ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž ์ˆœ์„œ๋„ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 


๐Ÿ’ก ์˜ˆ์ œ ์ž…๋ ฅ

10

 

๐Ÿ’ก ์˜ˆ์ œ ์ถœ๋ ฅ

3
10 9 3 1

 

 


๐Ÿ›  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐฉ์‹: Dynamic Programming (DP)

 

 

โœ๏ธ ํ•ต์‹ฌ ์ „๋žต

 

  • dp[i]: i๋ฅผ 1๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜
  • check[i]: i์— ์˜ค๊ธฐ ์ง์ „์˜ ์ˆ˜ (๊ฒฝ๋กœ ์ถ”์ ์šฉ)

 


๐Ÿ”น Java ์ฝ”๋“œ ์„ค๋ช…

 

 

๐Ÿ“Œ ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™”

dp[1] = 0;

โœ” 1์€ ์ด๋ฏธ ๋ชฉํ‘œ๊ฐ’์ด๋ฏ€๋กœ ์—ฐ์‚ฐ ํšŸ์ˆ˜ 0

 


๐Ÿ“Œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ dp ์ฑ„์šฐ๊ธฐ

for (int i = 2; i <= N; i++) {
    dp[i] = dp[i - 1] + 1;
    check[i] = i - 1;

    if (i % 3 == 0 && dp[i / 3] + 1 < dp[i]) {
        dp[i] = dp[i / 3] + 1;
        check[i] = i / 3;
    }

    if (i % 2 == 0 && dp[i / 2] + 1 < dp[i]) {
        dp[i] = dp[i / 2] + 1;
        check[i] = i / 2;
    }
}

โœ” ํ˜„์žฌ ์ˆ˜ i๋Š”

 

  • i-1
  • i/2
  • i/3โœ” check[i]๋ฅผ ํ†ตํ•ด ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ์ด์ „ ์ˆ˜ ์ €์žฅ
  • ์ค‘ ์ตœ์†Œ ์—ฐ์‚ฐ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒ

 


๐Ÿ“Œ ๊ฒฝ๋กœ ์ถ”์ 

sb.append(dp[N]).append("\n").append(N).append(" ");
while (N > 1) {
    sb.append(check[N]).append(" ");
    N = check[N];
}

โœ” dp๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ 

โœ” check[] ๋ฐฐ์—ด์„ ๋”ฐ๋ผ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ๊ฒฝ๋กœ๋ฅผ ์žฌ๊ตฌ์„ฑ

 


๐Ÿ† ์ •๋ฆฌ

โœ… ํ•ต์‹ฌ ํฌ์ธํŠธ

  • DP[i] = min(DP[i-1], DP[i/2], DP[i/3]) + 1
  • check[i] ๋ฐฐ์—ด์„ ํ†ตํ•ด ๊ฒฝ๋กœ ์ถ”์ ๊นŒ์ง€ ๊ฐ€๋Šฅ
  • ๊ฒฝ๋กœ ์ถœ๋ ฅ์ด ์ถ”๊ฐ€๋œ 1๋กœ ๋งŒ๋“ค๊ธฐ ํ™•์žฅํŒ

 

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ข‹์•„์š”์™€ ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ˜Š

 

 

 

'Algorithm & Data Structures > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

b14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 5  (0) 2025.04.16
b14002. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 4  (0) 2025.04.15
b1450. ๋ƒ…์ƒ‰๋ฌธ์ œ  (1) 2025.04.10
b3665. ์ตœ์ข…์ˆœ์œ„  (0) 2025.04.09
b.2696 ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ  (0) 2025.04.07
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 5
  • b14002. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 4
  • b1450. ๋ƒ…์ƒ‰๋ฌธ์ œ
  • b3665. ์ตœ์ข…์ˆœ์œ„
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (326)
      • Algorithm & Data Structures (246)
        • BOJ (104)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (27)
        • SQL (21)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • ์šด์˜์ฒด์ œ (13)
        • ๋„คํŠธ์›Œํฌ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    unionfind
    Java
    binarySearch
    ๋ฐฑ์ค€
    Dijkstra
    algorithm
    ๊ตฌํ˜„
    ๊ณจ๋“œ
    ๋™์ ๊ณ„ํš๋ฒ•
    Stack
    ๊ฒฝ๋กœ์••์ถ•
    ์Šคํƒ
    ํˆฌํฌ์ธํ„ฐ
    ์œ ๋‹ˆ์˜จํŒŒ์ธ๋“œ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    baekjoon
    ๋ฐฑํŠธ๋ž˜ํ‚น
    dfs
    PriorityQueue
    programmers
    ์ „์œ„์ˆœํšŒ
    ์ด๋ถ„ํƒ์ƒ‰
    DynamicProgramming
    ํ›„์œ„์ˆœํšŒ
    BFS
    dp
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    Union-Find
    ๋‹ค์ต์ŠคํŠธ๋ผ
    SQL
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b12852. 1๋กœ ๋งŒ๋“ค๊ธฐ 2
์ƒ๋‹จ์œผ๋กœ

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