Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바 조합 재귀
- 서로소
- jquery dom 계층 선택자
- 자바 순열 코드
- jquery 필터선택자
- 자바
- jquery 속성선택자
- 순열코드
- java lambda
- inner class
- 상속
- 순열 재귀
- java 내부 클래스
- 재귀
- 알고리즘 그래프
- java Collections.sort()
- 자바스크립트 이벤트처리
- Interface
- parseInt()
- str to char array
- 후위표기
- jquery 이벤트 처리
- 자바스크립트 이벤트중지
- 자바 재귀 조합
- Java
- 재귀함수
- 조합 재귀
- char to str
- 자바입출력
- 알고리즘
Archives
- Today
- Total
유블로그
[Java] BOJ 17609 회문 본문
[Java] BOJ 17609 회문
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ_17609_회문 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String s = br.readLine();
MIN = 2;
checkPal(false, s, 0, s.length()-1);
System.out.println(MIN);
}
} // main
static int MIN;
static void checkPal(boolean isUse, String s, int start, int idx) {
for (int i = start; i < s.length(); i++) {
if (i >= idx) {
break;
}
if (s.charAt(i) != s.charAt(idx)) {
if (isUse) return;
if (s.charAt(i) == s.charAt(idx - 1)) {
checkPal(true, s, i+1, idx-2);
}
if (MIN == 2 && s.charAt(i + 1) == s.charAt(idx)) {
checkPal(true, s, i+2, idx-1);
}
return;
}
idx--;
}
if (isUse) MIN = 1;
else MIN = 0;
return;
}
}
... 어렵지 않은데 이런 저런 이유로.. 시간이 오래 걸렸다.
슬프다
양쪽에서 인덱스를 좁혀오면서 같은 지 확인하는데,
만약 같지 않고 아직 삭제한 적도 없다면 checkPal() 함수를 재귀 타고 들어가서 끝까지 도달하는 지 확인한다.
이미 유사회문 판정이 났다면 MIN == 2 이걸로 더이상 유사회문 판정을 하지 않는다.
회문 판정 끝까지 도달 했을 때 삭제한 적이 있으면 MIN = 1
없으면 0
으로 출력한다.
'알고리즘' 카테고리의 다른 글
BOJ 1520 내리막길 Java (0) | 2021.06.10 |
---|---|
BOJ 1022 소용돌이예쁘게출력하기 Java (0) | 2021.06.06 |
[Java] BOJ 9935 문자열 폭발 (0) | 2021.05.04 |
[Java] BOJ 4949 균형 잡힌 세상 백준 (0) | 2021.05.03 |
[Java] BOJ 5430 AC 백준 (0) | 2021.05.02 |