(문제 설명)
(제한 사항)
어떻게 짜야할까 고민을 꽤 하다가.. 문자 각각을 중심으로 팰린드롬이 생성되는 모든 케이스를 나눠 조사해버리자 해서 만들어진 코드이다.
public static void main(String[] args) {
int max = 1;
for(int i=1; i<s.length()-1; i++) {
if(s.charAt(i-1) == s.charAt(i+1))
max = Math.max(max, calculator(s, i, i, 1)); // 문자 하나를 기준으로 팰린드롬 될 경우
if(s.charAt(i-1) == s.charAt(i))
max = Math.max(max, calculator(s, i-1, i, 2)); // 모든 문자가 짝지어져서 팰린드롬 될 경우(기준 문자와 앞 문자가 동일)
if(s.charAt(i+1) == s.charAt(i))
max = Math.max(max, calculator(s, i, i+1, 2)); // 모든 문자가 짝지어져서 팰린드롬 될 경우(기준 문자와 뒷 문자가 동일)
}
System.out.println(max);
}
public static int calculator(String s, int a, int b, int tmp) {
int k = 1;
while(a-k >= 0 && b+k < s.length()) {
int start = a-k, end = b+k;
if(s.charAt(start) == s.charAt(end)) {
tmp += 2;
k++;
}
else break;
}
return tmp;
}
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 오픈채팅방 (시간복잡도 빅오 O(n)) (0) | 2022.03.30 |
---|---|
[JAVA] 프로그래머스 - 야근지수 (0) | 2021.02.17 |
[JAVA] 프로그래머스 - 여행경로 (0) | 2021.02.07 |
[JAVA] 프로그래머스 - 디스크 컨트롤러 (0) | 2021.02.02 |
[JAVA] 프로그래머스 - 뉴스 클러스터링 (0) | 2020.12.27 |
댓글