728x90
반응형
SMALL
제목 : 팰린드롬인지 확인하기 (no.10988)
문제 출처
10988번: 팰린드롬인지 확인하기 (acmicpc.net)
문제
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
Input
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
Output
첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.
Ex.Input 1
level
Ex.Output 1
1
Ex.Input 2
baekjoon
Ex.Output 2
0
Code
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner xx = new Scanner(System.in);
int count = 0;
String st = xx.next();
// 홀수든 짝수든 절반까지 돌아서 데칼코마니로 같아야한다.
for(int j = 0; j < st.length()/2; j++) {
// 데칼코마니처럼 입력받은 값을 반으로 접었을 때 인덱스가 서로 반대인 값이 일치하는 경우 count 해준다.
if(st.charAt(j) == st.charAt(st.length() - (j+1))) {
count++;
}
}
// 일치하는 경우가 입력받은 값의 절반과 같다면 == 전부 일치하는 팰린드롬
if (count == st.length()/2) {
System.out.println("1");
}else {
System.out.println("0");
}
}
}
풀이 방법
데칼코마니라고 생각하고 풀면 생각보다 쉽게 풀 수 있다.
먼저 입력받은 값을 절반으로 접는다 생각하고
인덱스값이 반대되는 값 즉, level이라 치면 l의 반대는 l, e의 반대는 e
string이라고 치면 s 의 반대는 g, t의 반대는n, r의 반대는i가 되는 것이다
이렇게 반대되는 값이 서로 모두 같다면 팰린드롬이라는 것이다!
의문을 가질 수 도있는경우가 혹시 입력받는 string의 length값이 홀수면 어떡하나 할 수 있는데
위에 if문의 조건을 보면 알 수 있듯이 홀수면 애초에 if문 안으로 들어가지 않는다(7/2는 3이고 6/2도 3이기 때문)
고로 leavael이든 leaael이든 똑같이 비교한다는 것이다.
티스토리와 깃허브 홈
오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.
728x90
반응형
LIST
'백준' 카테고리의 다른 글
[JAVA] 백준 3003. (0) | 2023.10.12 |
---|---|
[JAVA] 백준 2444. (0) | 2023.10.11 |
[JAVA] 백준 1316. (1) | 2023.10.06 |
[JAVA] 백준 3052. (0) | 2023.10.05 |
[JAVA] 백준 10813. (1) | 2023.10.05 |