반응형
문제
가장 긴 팰린드롬
https://school.programmers.co.kr/learn/courses/30/lessons/12904
풀이
설명
문자열 s의 부분문자열 중 가장 긴 팰린드롬의 길이를 구하는 문제입니다.
홀수 길이 팰린드롬 또는 짝수 길이 팰린드롬이 있을 수 있습니다.
팰린드롬은 특정 인덱스를 중심으로 해서 좌우로 퍼져나가며 구할 수 있습니다.
문자열을 순회하면서 각 인덱스에서 만들 수 있는 가장 긴 팰린드롬의 길이를 구해 최대 길이를 비교합니다.
예시 코드
function solution(s) {
let maxLength = 1;
for (let i = 0; i < s.length; i++) {
// 홀수 길이
maxLength = Math.max(maxLength, expandFromMiddle(i, i));
// 짝수 길이
maxLength = Math.max(maxLength, expandFromMiddle(i, i + 1));
}
return maxLength;
function expandFromMiddle(left, right) {
while (left >= 0 && right < s.length && s[left] === s[right]) {
left--;
right++;
}
return right - left - 1;
}
}
'Coding Problem' 카테고리의 다른 글
[프로그래머스] 삼각 달팽이 (0) | 2025.01.03 |
---|---|
[프로그래머스] 마법의 엘리베이터 (0) | 2025.01.02 |
[프로그래머스] 2개 이하로 다른 비트 (0) | 2024.12.31 |
[프로그래머스] N-Queen (0) | 2024.12.30 |
[프로그래머스] 과제 진행하기 (0) | 2024.12.29 |