곽로그
[백준10988, JAVA ]팰린드롬인지 확인하기 본문
반응형
문제
https://www.acmicpc.net/problem/10988
풀이
앞으로 읽을 때와 거꾸로 읽을 때가 같다는 말은, 단어를 반으로 접었을 때 대칭이라는 것에서 힌트를 얻었다.
예제인 LEVEL로 예를 들어보자. 가운데 V를 기준으로 양끝에 있는 알파벳이 차례로 같다. 다시말해 0번째 알파벳과 4번째 알파펫, 1번째 알파벳과 3번째 알파벳이 같다. 여기서 대략적인 식을 세울 수 있다. 처음부터 단어의 중간 전까지 비교를 반복한다(중간에 있는 단어는 비교할 대상이 없기때문에 제외된다). 비교를 어떻게 하는가를 보자. 첫번째(0) 는 마지막 (4) 알파벳과, 두번째(1)는 끝에서 두번째 앞파벳(3) 과 비교를 한다. 여기서 인덱스로 치환해서 생각하면 i 번째 알파벳과 n(단어의 길이) - 1-i번째 알파벳과 비교를 하는데, 두 알파벳이 같지 않으면 팰린드롬이 아니다
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
int n = input.length();
int result = 1;
//1. 짝수개의 인풋 : level 0,1,2,3,4 5/2 = 2 (0-4, 1-3)
//2. 홀수개의 인풋 : baekjoon 0,1,2,3,4,5,6,7 8/2 = 4 (0-7, 1-6, 2-5,3-4)
for(int i =0; i <n ; i++){
if(input.charAt(i) != input.charAt(n-i-1)){
result = 0;
break;
}
}
bw.write(String.valueOf(result));
bw.flush();
br.close();
bw.close();
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 2444, JAVA] 별 찍기 -7 (0) | 2023.03.21 |
---|---|
[백준 25083, JAVA] 새싹 ( java escape 문자) (0) | 2023.03.19 |
[백준 10811, JAVA] 바구니 뒤집기 (0) | 2023.03.12 |
[백준 2460 | java, python] 주사위 세개 (0) | 2022.04.22 |
[백준 2525, python] 오븐 시계 (0) | 2022.04.14 |
Comments