-
[프로그래머스/Level 3] 가장 긴 팰린드롬 (C++)알고리즘 문제풀이/프로그래머스 2021. 2. 18. 00:27
programmers.co.kr/learn/courses/30/lessons/12904
DP를 이용하여 팰린드롬의 길이가 가장 긴 경우를 찾는 문제입니다. 예전에 풀었던 백준 10942번을 참고했습니다.
#include <string> using namespace std; bool dp[2501][2501]; int solution(string s) { int answer = 1; for(int i = 0; i < s.size(); i++) { dp[i][i] = true; } for(int i = 0; i < s.size() - 1; i++) { if(s[i] == s[i + 1]) { dp[i][i + 1] = true; answer = 2; } } for(int len = 3; len <= s.size(); len++) { for(int i = 0; i < s.size() - len + 1; i++) { int j = i + len - 1; if(s[i] == s[j] && dp[i + 1][j - 1]) { dp[i][j] = true; answer = len; } } } return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 2] 방문 길이 (C++) (0) 2021.02.24 [프로그래머스/Level 3] 거스름돈 (C++) (0) 2021.02.22 [프로그래머스/Level 3] 보행자 천국 (C++) (0) 2021.02.16 [프로그래머스/Level 3] 순위 (C++) (0) 2021.02.15 [프로그래머스/Level 3] 이중우선순위큐 (C++) (0) 2021.02.10