곽로그
[백준10988, JAVA ]팰린드롬인지 확인하기 본문
반응형
문제
https://www.acmicpc.net/problem/10988
10988번: 팰린드롬인지 확인하기
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
www.acmicpc.net
풀이
앞으로 읽을 때와 거꾸로 읽을 때가 같다는 말은, 단어를 반으로 접었을 때 대칭이라는 것에서 힌트를 얻었다.
예제인 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