class Solution
{
public int solution(String s)
{
int answer = 0;
for (int i = 0; i < s.length(); i++) {
int left = i, right = s.length() - 1;
int j = s.length();
while (left <= right) {
if (s.charAt(left) != s.charAt(right)) {
left = i;
j = right;
}
else {
left++;
}
right--;
}
if (j - i > answer) answer = j - i;
}
return answer;
}
}
문자열의 길이가 최대 2500이어서 n^2으로 풀었다.
효율성은 다 통과했는데 정확성에서 3개가 틀렸다고 떴다.
원인을 모르겠다. 다음에 다시 도전해봐야겠다.
예외상황이 있었다. 근데 예외상황을 해결하자니 시간초과가 뜬다.
문자열 알고리즘을 공부한 후 다시 풀어봐야겠다.
class Solution
{
public int solution(String s)
{
int answer = 0;
for (int i = 0; s.length() - i > answer; i++) {
for (int j = s.length(); j - i > answer; j--) {
int left = i, right = j - 1;
boolean b = true;
while (left <= right) {
if (s.charAt(left) != s.charAt(right)) {
b = false;
break;
}
left++;
right--;
}
if (b) answer = j - i;
}
}
return answer;
}
}
for문의 종료조건을 수정하여 해결하였다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges