[C++] 백준/Gold/10942. 팰린드롬?

2025. 2. 14. 21:01·C++/Algorithm

문제: 팰린드롬? (백준 10942번)

문제 분석

입력으로 주어진 단어(숫자 배열)의 구간에 대해, 해당 구간이 팰린드롬인지 판별하는 문제다.
n개의 수가 주어지고, m개의 질의가 주어진다. 각 질의는 시작 인덱스 S와 끝 인덱스 E가 주어지며, 이 구간이 팰린드롬이면 1, 아니면 0을 출력한다.


동적 계획법(DP)을 이용해, 구간 $[i, j]$가 팰린드롬인지 판별하는 2차원 배열 dp를 구성한다.

 

기저 조건:

  • 한 글자짜리 구간은 항상 팰린드롬이므로, $dp[i][i] = true$
  • 인접한 두 수가 같으면, $dp[i][i+1] = true$

 

점화식:

$dp[i][j] = \text{true} \quad \text{if} \quad v[i] = v[j] \quad \text{and} \quad dp[i+1][j-1] = \text{true}$

 

이후 m개의 질의를 입력받아, dp[S][E]의 값을 출력한다.

 

전체 코드

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0); cin.tie(0);

    int n, m;
    cin >> n;
    vector<int> v(n + 1);
    vector<vector<bool>> dp(n + 1, vector<bool>(n + 1, false));

    for (int i = 1; i <= n; i++) {
        cin >> v[i];
        dp[i][i] = true; 
    }

    for (int i = 1; i < n; i++) {
        if (v[i] == v[i + 1]) dp[i][i + 1] = true;
    }

    for (int len = 2; len <= n; len++) {
        for (int i = 1; i + len <= n; i++) {
            int j = i + len;
            if (v[i] == v[j] && dp[i + 1][j - 1]) {
                dp[i][j] = true;
            }
        }
    }

    cin >> m;
    while (m--) {
        int S, E;
        cin >> S >> E;
        cout << dp[S][E] << '\n';
    }
}

'C++ > Algorithm' 카테고리의 다른 글

[C++] 백준/Silver/6588. 골드바흐의 추측  (0) 2025.02.18
[C++] 백준/Gold/9205. 맥주 마시면서 걸어가기  (1) 2025.02.17
[C++] 백준/Gold/2589. 보물섬  (0) 2025.02.13
[C++] 백준/Gold/1339. 단어 수학  (0) 2025.02.12
[C++] 백준/Gold/3055. 탈출  (0) 2025.02.11
'C++/Algorithm' 카테고리의 다른 글
  • [C++] 백준/Silver/6588. 골드바흐의 추측
  • [C++] 백준/Gold/9205. 맥주 마시면서 걸어가기
  • [C++] 백준/Gold/2589. 보물섬
  • [C++] 백준/Gold/1339. 단어 수학
돼지표
돼지표
https://github.com/wkdgns135
  • 돼지표
    돼지표 개발 스토리
    돼지표
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • C++ (58)
        • Algorithm (52)
      • Python (1)
      • Machine Learning (2)
      • Computer Graphics (4)
        • Curly Hair Simulation (2)
      • GPU Programming (11)
        • CUDA basic (7)
        • CUDA fluidsGL (4)
      • Unreal 5 (20)
        • Troubleshooting (4)
        • FPS Shooting (5)
        • Study (9)
        • EOS (1)
      • Computer Science (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    구현
    unreal 5
    dp
    UE5
    BFS
    OpenGL
    아이작 맵 생성
    Fluid Simulation
    CS
    수학
    Rendering Pipeline
    GPU Programming
    그래프 탐색
    CUDA
    Algorithm
    C++
    FPS
    그리디 알고리즘
    위상 정렬
    자료 구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
돼지표
[C++] 백준/Gold/10942. 팰린드롬?
상단으로

티스토리툴바