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

๋ฐฑ์ค€ 2306: ์œ ์ „์ž(Java)

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

๐ŸŽฏ ๋ชฉํ‘œ

  • ์ฃผ์–ด์ง„ DNA ๋ฌธ์ž์—ด์—์„œ KOI ์œ ์ „์ž ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์žฅ ์œ ํšจ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.
  • KOI ์œ ์ „์ž ์ •์˜:
    • at, gc๋Š” KOI ์œ ์ „์ž.
    • KOI ์œ ์ „์ž X โ†’ aXt, gXc๋„ KOI ์œ ์ „์ž.
    • X, Y๊ฐ€ KOI ์œ ์ „์ž โ†’ XY๋„ KOI ์œ ์ „์ž.

โœ… ํ•ต์‹ฌ ์•„์ด๋””์–ด

  • DP[i][j]: i~j๊นŒ์ง€ KOI ์œ ์ „์ž ์ค‘ ์ตœ์žฅ ๊ธธ์ด
  • ๋‘ ๊ฐ€์ง€ ์ „์ด ๋ฐฉ์‹:
    1. ๊ฒฝ๊ณ„ ์กฐ๊ฑด: (i,j) ๊ฐ€ a,t or g,c๋กœ ๊ฐ์‹ธ์ง„๋‹ค๋ฉด โ†’ ๋‚ด๋ถ€ + 2
    2. ๋ถ„ํ•  ๊ฒฐํ•ฉ: dp[i][j] = max(dp[i][k] + dp[k+1][j])

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

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

public class Main {
    static int[][] dp;
    static char[] dna;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        dna = br.readLine().toCharArray();
        int n = dna.length;

        dp = new int[n][n];

        for (int len = 2; len <= n; len++) {
            for (int i = 0; i + len - 1 < n; i++) {
                int j = i + len - 1;

                if (isPair(dna[i], dna[j])) {
                    dp[i][j] = Math.max(dp[i][j], 2 + (i + 1 <= j - 1 ? dp[i + 1][j - 1] : 0));
                }

                for (int k = i; k < j; k++) {
                    dp[i][j] = Math.max(dp[i][j], dp[i][k] + dp[k + 1][j]);
                }
            }
        }

        System.out.println(dp[0][n - 1]);
    }

    static boolean isPair(char a, char b) {
        return (a == 'a' && b == 't') || (a == 'g' && b == 'c');
    }
}

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

  • O(Nยณ): i, j, k ์„ธ์ค‘ ๋ฃจํ”„
  • N โ‰ค 500์ด๋ฏ€๋กœ Java์—์„œ๋„ ํ†ต๊ณผ ๊ฐ€๋Šฅ

๐Ÿ’ก ์ •๋ฆฌ

  • ์ด ๋ฌธ์ œ๋Š” ์ „ํ˜•์ ์ธ ๋ฌธ์ž์—ด DP ๋ฌธ์ œ์ด๋ฉฐ, ๋ถ„ํ•  ์ •๋ณต์  ์‚ฌ๊ณ ์™€ ๊ฒฝ๊ณ„ ์กฐ๊ฑด ์ฒ˜๋ฆฌ๊ฐ€ ํ•ต์‹ฌ
  • dp[i][j] = max(๊ฒฝ๊ณ„ ํฌํ•จ, ๋ถ„ํ• ) ํ˜•ํƒœ๋ฅผ ์ž˜ ์ดํ•ดํ•˜์ž

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

๋ฐฑ์ค€ 2615: ์†Œํ˜•๊ธฐ๊ด€์ฐจ(Java)  (0) 2025.06.29
๋ฐฑ์ค€ 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
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 2615: ์†Œํ˜•๊ธฐ๊ด€์ฐจ(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
์ƒ๋‹จ์œผ๋กœ

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