https://school.programmers.co.kr/learn/courses/30/lessons/12904
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
접근 방법
- 팰린드롬이 되는 경우는 2가지가 있다.
- aaabbb
- aaacbbb
- 위처럼 중간에 하나의 문자는 끼어있어도 팰린드롬 수이이다.
- 따라서 s를 선형탐색하며 팰린드롬을 찾는 find함수를 실행했다.
- 문자열 s범위내이고, l,r 포인터의 문자가 같을경우 좌우로 퍼져가며 탐색
- l,r 포인터가 한번 더 진행하므로 r-l+1-2 => r-l-1이 해당 팰린드롬 수의 길이가 된다.
- 전역변수 ans를 대소비교를 통해 갱신한다
코드
class Solution{
int n = 0;
int ans = 0;
public int solution(String s){
n = s.length();
if(n == 1) return 1;
for(int i = 1 ; i < n ; i++){
find(i-1,i,s);
find(i-1,i+1,s);
}
return ans;
}
void find(int l, int r,String s){
while(!OOB(l,r) && s.charAt(l) == s.charAt(r)){
l--;
r++;
}
ans = Math.max(ans,r-l-1);
}
boolean OOB(int l,int r){
return l < 0 || r >= n;
}
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] LV 3 경주로 건설 (0) | 2024.11.21 |
---|---|
[프로그래머스] LV 3 부대복귀 (0) | 2024.11.18 |
[프로그래머스] LV 2 하노이 탑 (1) | 2024.11.16 |
[프로그래머스] LV 3 정수 삼각형 (0) | 2024.11.11 |
[프로그래머스]LV 3 연속 펄스 부분 수열의 합 (0) | 2024.11.10 |