끄적끄적
프로그래머스 가장 긴 팰린드롬 본문
너무 복잡하게 생각해서 계속 시간 초과가 났다..
함수를 새로 만들지 않고 그냥 for문으로 체크해주니 통과했다 ㅜ
효율성 1번에서만 시간초과가 발생한다면 현재 탐색할 길이가 그때까지 찾은 최대 길이보다 작으면 탐색하지 않는 방안을 생각해보자
import java.util.*;
class Solution
{
public int solution(String s)
{ int maxLen = 1; //최대 길이는 항상 1
for(int i=0;i<s.length();i++){ //살펴볼 시작 위치
for(int j=s.length()-1;j>=i;j--){ //살펴볼 마지막 위치
int start = i; //start에 시작 위치저장
int last=j; //last에 마지막 위치 저장
boolean check=true; //팰린드롬이 가능한지 체크할 boolean변수
for(int k=0;k<j;k++){ //하나씩 이동하면서 같은지 본다
if(maxLen>last-start+1) break; // 살펴볼 길이가 최대 길이보다 작아지면 살펴볼 필요 없음
if(start+k>= last-k) break; // 시작 위치가 끝 위치보다 커지면 탈출
if(s.charAt(start+k) != s.charAt(last-k)){ // 같지않은 문자 찾으면
check=false;//false로 바꾸고 탈출
break;
}
}
if(check){ //펠린드롬 가능하면
maxLen = Math.max(maxLen,last-start+1); //최대 길이 갱신
}
}
}
return maxLen;
}
}
'알고리즘' 카테고리의 다른 글
내가 보려고 적는 순열, 조합, 부분 집합 (0) | 2021.09.27 |
---|---|
SWE 암호생성기 (0) | 2021.08.06 |
백준 2493 탑 (0) | 2021.08.06 |
백준 17478 재귀함수가 뭔가요? (0) | 2021.08.06 |
백준 1244 스위치 켜고끄기 (0) | 2021.08.06 |
Comments