본문 바로가기
알고리즘/백준

[Java] 10988 팰린드롬인지 확인하기 - Substring

by Garonguri 2022. 1. 26.
728x90

https://www.acmicpc.net/problem/10988

 

10988번: 팰린드롬인지 확인하기

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

www.acmicpc.net

 

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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    static String sub1;
    static String sub2;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        String str = br.readLine();
        int n = str.length();
        if(n%2 ==0){
 
            sub1 = str.substring(0,n/2);
            sub2 = str.substring(n/2, n);
        }else{
            sub1 = str.substring(0,n/2);
            sub2 = str.substring(n/2+1, n);
        }
        StringBuffer sb = new StringBuffer(sub2);
        String resub2 = sb.reverse().toString();
 
        if(sub1.equals(resub2)) System.out.println(1);
        else System.out.println(0);
    }
}
cs

거꾸로 뒤집었을 때 같은 문자인지, 즉 데칼코마니인지? 확인하는 문제이다.

데칼코마니를 확인하기 위해선, 우선 문자열의 길이를 봐야한다.

 

문자열이 짝수라면 절반으로 나눴을 때 남는 문자가 존재하지 않고,

문자열이 홀수라면 절반으로 나누었을 때 가운데 한 개의 문자열이 남기 때문이다.

 

문자열이 짝수개라면 문자열의 전체 길이 n을 기준으로, [0:n/2], [n/2:n]

문자열이 홀수개라면 문자열의 전체 길이 n을 기준으로, [0:n/2], [(n/2)+1:n]

 

이렇게 substring을 나눈 후, 데칼코마니인지를 확인하기 위해 substring 중 하나를 reverse()를 통해 index를 뒤집어주었다.

그 후, 문자열이 같은지를 판단하는 메소드인 equals를 통해 같은지 아닌지를 판단하였다.

끝!!

 

 

728x90

댓글