๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€

๋ฐฑ์ค€ 2615: ์†Œํ˜•๊ธฐ๊ด€์ฐจ(Java)

2025. 6. 29. 21:23ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿš† ๋ฐฑ์ค€ 2616๋ฒˆ: ์†Œํ˜•๊ธฐ๊ด€์ฐจ

๐ŸŽฏ ๋ฌธ์ œ ์š”์•ฝ

  • N๊ฐœ์˜ ๊ฐ์ฐจ(1 ≤ N ≤ 50,000)๊ฐ€ ์ˆ˜์ง์„  ์ƒ์— ์žˆ๋‹ค.
  • ๊ฐ ๊ฐ์ฐจ์—๋Š” ์†๋‹˜์ด ํƒ€๊ณ  ์žˆ๋‹ค (์ตœ๋Œ€ 100๋ช…).
  • ์†Œํ˜• ๊ธฐ๊ด€์ฐจ๋Š” ์ตœ๋Œ€ K์นธ๊นŒ์ง€ ๋Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด 3๋Œ€๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • 3๊ฐœ์˜ ์†Œํ˜• ๊ธฐ๊ด€์ฐจ๊ฐ€ ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ์ดํ•ฉ ์†๋‹˜ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ์šดํ–‰ํ•  ๋•Œ์˜ ์ตœ๋Œ€ ์†๋‹˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ.

๐Ÿง  ๋ฌธ์ œ ์ ‘๊ทผ

โœ… ํ•ต์‹ฌ ๊ฐœ๋…

  • 3๊ฐœ์˜ ๊ธฐ๊ด€์ฐจ๊ฐ€ ๋Œ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฐจ๋ฅผ ๋น„์ค‘๋ณต์œผ๋กœ ์„ ํƒ → ๊ตฌ๊ฐ„ ํ•ฉ ์ตœ์ ํ™”
  • ๋ˆ„์ ํ•ฉ + DP ์‚ฌ์šฉ
  • dp[i][j]: i๋ฒˆ์งธ ๊ธฐ๊ด€์ฐจ๊นŒ์ง€ ์‚ฌ์šฉํ•ด์„œ, j๋ฒˆ์งธ ๊ฐ์ฐจ๊นŒ์ง€ ํƒ์ƒ‰ํ–ˆ์„ ๋•Œ ์ตœ๋Œ“๊ฐ’

๐Ÿ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        int[] people = new int[N + 1];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 1; i <= N; i++) {
            people[i] = Integer.parseInt(st.nextToken());
        }

        int K = Integer.parseInt(br.readLine());

        int[] total = new int[N + 1];
        for (int i = 1; i <= N; i++) {
            total[i] = total[i - 1] + people[i];
        }

        int[][] dp = new int[4][N + 1];

        for (int i = 1; i <= 3; i++) {
            for (int j = K * i; j <= N; j++) {
                int curtotal = total[j] - total[j - K];
                dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j - K] + curtotal);
            }
        }

        System.out.println(dp[3][N]);
    }
}

โœ… ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๋ˆ„์ ํ•ฉ ๊ณ„์‚ฐ: O(N)
  • DP ํ…Œ์ด๋ธ” ์ฑ„์šฐ๊ธฐ: O(N)
  • ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„: O(N) → N ≤ 50,000 ์ด๋ฏ€๋กœ ์ถฉ๋ถ„ํžˆ ํ†ต๊ณผ ๊ฐ€๋Šฅ

๐Ÿ’ก ์ •๋ฆฌ

  • ํ•ต์‹ฌ์€ ๋น„์ค‘๋ณต ๊ตฌ๊ฐ„ ํ•ฉ ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ DP + ๋ˆ„์ ํ•ฉ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ
  • ์ƒํƒœ ์ „์ด: dp[i][j] = max(dp[i][j - 1], dp[i - 1][j - K] + sum(j-K+1 ~ j))
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋‚œ์ด๋„๋Š” ๋‚ฎ์ง€๋งŒ, ์ƒํƒœ ์ •์˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค

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

๋ฐฑ์ค€ 2306: ์œ ์ „์ž(Java)  (1) 2025.06.12
๋ฐฑ์ค€ 1557: ๋„๋กœ์˜ ๊ฐœ์ˆ˜(Java)  (1) 2025.06.11
๋ฐฑ์ค€ 2248 - ์ด์ง„์ˆ˜ ์ฐพ๊ธฐ(Java)  (1) 2025.06.07
๋ฐฑ์ค€ 10800๋ฒˆ: ์ปฌ๋Ÿฌ๋ณผ (Java)  (1) 2025.06.04
๋ฐฑ์ค€ 2294: ๋™์ „2(Java)  (1) 2025.06.02
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 2306: ์œ ์ „์ž(Java)
  • ๋ฐฑ์ค€ 1557: ๋„๋กœ์˜ ๊ฐœ์ˆ˜(Java)
  • ๋ฐฑ์ค€ 2248 - ์ด์ง„์ˆ˜ ์ฐพ๊ธฐ(Java)
  • ๋ฐฑ์ค€ 10800๋ฒˆ: ์ปฌ๋Ÿฌ๋ณผ (Java)
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • ๊ฐœ๋ฐœ์ž (77)
      • n8n (2)
      • CS๊ณต๋ถ€ (46)
        • Java & Spring (15)
        • ์ธํ”„๋ผ (7)
        • ์šด์˜์ฒด์ œ & ์‹œ์Šคํ…œ (9)
        • ๊ธฐํƒ€ CS์ง€์‹ (7)
        • ๋„คํŠธ์›Œํฌ (6)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (16)
      • ํ”„๋กœ์ ํŠธ (8)
        • ๊ฐ์ •&๊ธˆ์œต์ฑ—๋ด‡ (8)
      • ๋ฆฌํŒฉํ† ๋ง (5)
        • horong (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ƒ๋‹จ์œผ๋กœ

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