๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 10942๋ฒˆ - ํŒฐ๋ฆฐ๋“œ๋กฌ? (Java)

by SooooooooS 2023. 12. 22.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ž€?

๊ฑฐ๊พธ๋กœ ์ฝ์–ด๋„ ์ œ๋Œ€๋กœ ์ฝ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์ด๋‚˜ ๋‚ฑ๋ง, ์ˆซ์ž, ๋ฌธ์ž์—ด(sequence of characters) ๋“ฑ

์ฆ‰, ์•ž๋’ค๋กœ ์ฝ์–ด๋„ ๋˜‘๊ฐ™๋‹ค! (ex. ํ† ๋งˆํ† )

[์œ„ํ‚ค] https://ko.wikipedia.org/wiki/%ED%9A%8C%EB%AC%B8

 

์ด๋Š” 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ„์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ
    • 1, 2, 3, a, b, c
    • ๋ฌด์กฐ๊ฑด ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋‹ค.
  • ๊ธธ์ด๊ฐ€ 2์ธ ๊ฒฝ์šฐ
    • 11, 22, 33, aa, bb, cc
    • ๋‘ ๋ฌธ์ž๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ์—๋งŒ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋‹ค.
  • ๊ธธ์ด๊ฐ€ 3์ด์ƒ์ธ ๊ฒฝ์šฐ
    • 121, aba
    • ๋งจ ์•ž์˜ ๋ฌธ์ž์™€ ๋งจ ๋์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ™๊ณ  ์ค‘๊ฐ„์˜ ๋ฌธ์ž์—ด์ด ํŒฐ๋ฆฐ๋“œ๋กฌ์ผ ๊ฒฝ์šฐ์—๋งŒ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋‹ค.

 

์œ„์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ž์—ด์—์„œ ์–ด๋Š ๋ถ€๋ถ„์ด ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

n x n์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ dp[i][j]๋Š” i๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž์—ด์ด ํšŒ๋ฌธ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์ €์žฅํ•ด๋‘”๋‹ค.

 

์ด ์„ฑ์งˆ์„ ์ด์šฉํ•˜์—ฌ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚˜์„œ ์ ์–ด๋ณธ๋‹ค.

 

[BOJ] 17609๋ฒˆ - ํšŒ๋ฌธ (Java)

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ ๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ ์ด ๋ฌธ์ œ๋Š” ํšŒ๋ฌธ์„ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ, 1๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ํšŒ๋ฌธ์ด ๋˜๋Š” ๊ฒƒ๋„ ์•Œ์•„๋‚ด์•ผ ํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ ๋ฐ˜๋ก€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ณ ์น˜๋Š” ๊ณผ์ •์„ ์ •๋ฆฌํ•œ๋‹ค. ํšŒ๋ฌธ์˜ ํŠน์„ฑ

soo-note.tistory.com


๐Ÿ€ ํ’€์ด ๐Ÿ€

package Baekjoon;

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

public class DP10942 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] nums = new int[n];
        boolean[][] dp = new boolean[n][n]; //i-j๊นŒ์ง€์˜ ์ˆ˜์—ด์ด ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ฉด dp[i][j] = true
        for(int i = 0; i < n; i++) {
            nums[i] = Integer.parseInt(st.nextToken());
            dp[i][i] = true; //๊ธธ์ด๊ฐ€ 1์ด๋ฉด ๋ฌด์กฐ๊ฑด ํŒฐ๋ฆฐ๋“œ๋กฌ
        }

        for(int i = 1; i < n; i++) { //๊ธธ์ด๊ฐ€ 2์ด๋ฉด ๋‘ ์ˆ˜๊ฐ€ ๊ฐ™์•„ํ–์ง€๋งŒ ํŒฐ๋ฆฐ๋“œ๋กฌ
            if(nums[i-1] == nums[i]){
                dp[i-1][i] = true;
            }
        }

        //๊ธธ์ด๊ฐ€ 3์ด์ƒ์ธ ์ˆ˜์—ด์ธ ๊ฒฝ์šฐ
        for(int i = 2; i < n; i++) { //i = ์ˆ˜์—ด ๊ธธ์ด
            for(int j = 0; j < n-i; j++) { //j = ์‹œ์ž‘ ์ธ๋ฑ์Šค
                if(nums[j] == nums[j+i] && dp[j+1][j+i-1]) dp[j][j+i] = true;
            }
        }

        int m = Integer.parseInt(br.readLine());
        for(int i = 0; i < m; i++) {
            st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken()) - 1;
            int end = Integer.parseInt(st.nextToken()) - 1;
            if(dp[start][end]) bw.write(1+"\n");
            else bw.write(0+"\n");
        }
        bw.flush();
        bw.close();
    }
}
728x90