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
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA] 1043 거짓말 (0) | 2022.01.30 |
---|---|
[Java] 2456 나는 학급회장이다 - 정렬 (0) | 2022.01.27 |
[Java] 1157 단어공부 - 소문자 <-> 대문자 (0) | 2022.01.26 |
[Java, Python] 2589 보물섬 - BFS (0) | 2022.01.25 |
[Java] 1744 수 묶기 - ... 조건 처리? (0) | 2022.01.25 |
댓글