(C++) BOJ 백준 10942번 펠린드롬?

2025. 3. 17. 19:31·Algorithm

백준 10942번 펠린드롬? (C++)



문제 설명

  • 주어진 수열에서 펠린드롬을 찾아내는 문제.
  • a,b가 주어지면 a~b의 수열이 펠린드롬인지 판별해야함.

풀이

  • 펠린드롬을 직접 판별하는 것은 매우 간단하지만, 질문을 1000000번 할 수 있기 때문에 최악의 경우 시간이 너무 오래걸릴 수 있다. 이 문제의 시간 제한은 0.1 초이기 때문에 DP를 생각해야한다.
  • 길이가 1인 수열일 경우 항상 펠린드롬.
  • 길이가 2인 수열일 경우 두 숫자가 같다면 펠린드롬.
  • 길이가 3이상인 수열일 경우 양 끝의 숫자가 같고 그 사이의 수열이 펠린드롬일 경우 펠린드롬.
  • 위 3가지 조건을 고려하여 DP로 해결하였다.

코드

ㅇㄹㅇㄹ

#include <iostream>
using namespace std;
#define FOR(i,N) for(int i=1; i<=N; i++)
int N,M;
int nums[2001];
int DP[2001][2001];
void dp() {
    FOR(i,N) DP[i][i] = 1;
    FOR(i,N-1) if(nums[i] == nums[i+1]) DP[i][i+1] = 1;
    for(int i=3; i<=N; i++) {
        for(int j=1; j+i-1<=N; j++) {
            if(nums[j]==nums[j+i-1] && DP[j+1][j+i-2]==1) {
                DP[j][j+i-1] = 1;
            }
        }
    }
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> N;
    FOR(i,N) {
        cin >> nums[i];
    }
    dp();
    cin >> M;
    FOR(i,M) {
        int s,e; cin >> s >> e;
        cout << DP[s][e] << '\n';
    }
    return 0;
}

'Algorithm' 카테고리의 다른 글

(C++) BOJ 백준 1525 퍼즐 / BFS, unordered_map  (0) 2025.04.02
(C++) BOJ 백준 1005번 ACM Craft / 위상 정렬(Topology Sort)  (0) 2025.03.21
(C++) 백준 1992.쿼드트리  (0) 2025.02.18
(C++) 백준 15591. MooTube  (0) 2025.01.26
(C++) 백준 1068.트리  (0) 2025.01.25
'Algorithm' 카테고리의 다른 글
  • (C++) BOJ 백준 1525 퍼즐 / BFS, unordered_map
  • (C++) BOJ 백준 1005번 ACM Craft / 위상 정렬(Topology Sort)
  • (C++) 백준 1992.쿼드트리
  • (C++) 백준 15591. MooTube
devStudent
devStudent
저의 개발(Development) 공부(Study) 기록을 추적(Tracing) 하는 블로그입니다!
  • devStudent
    Dev_Study_Trace
    devStudent
  • 전체
    오늘
    어제
    • 분류 전체보기 (23)
      • BackEnd (11)
      • DevOps (4)
      • Algorithm (7)
      • DDD 12기 (Server) (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    백준
    리버스 프록시
    프록시 실습
    boj
    백준 1092
    쿠버네티스
    백준 1068번
    devops
    yml
    알고리즘
    docker
    boj 1992
    분할 정복 알고리즘
    도커
    데브 옵스
    GitHub Actions
    http 상태코드
    Divide and conquer
    NGINX
    boj1068
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
devStudent
(C++) BOJ 백준 10942번 펠린드롬?
상단으로

티스토리툴바