문제 풀이

[백준] 10988번: 팰린드롬인지 확인하기 - JAVA(자바)

auyeol 2023. 8. 9. 18:11
728x90

 

문제

 

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

 

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

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

www.acmicpc.net

 

단어를 입력한 뒤, 입력한 단어가 팰린드롬인지 아닌지 확인하는 문제이다. 단어는 소문자로만 이루어져 있으며, 팰린드롬이면1, 아니면 0을 출력한다.

 

+) 팰린드롬은 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. 

 

   ex) level, noon, pop, refer .... 

 

입력                                    	출력
level						1

입력                                    	출력
ba						0

입력                                    	출력
refer						1

 

 

------------------------------------------------------------------------------------------------------------------

 

풀이

 

단어를 Scanner를 이용하여 문자열로 입력받은 뒤, 문자열 길이의 절반만큼 for문을 반복시켰다.

 

charAt()을 이용하여 단어를 char형으로 바꾸는데 단어가 서로 일치해야 하므로

 

str.charAt(i)와 str.charAt(len-1-i)가 다른경우 ans = 0이 되게 설정하였다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String str = sc.next();
		sc.close();
		int len = str.length();
		int ans = 1;
		
		for(int i=0;i<len/2;i++) {
			if(str.charAt(i)!=str.charAt(len-1-i)) {
				ans = 0;
			}
		}
		System.out.println(ans);
		
	}
}

 

아래는 StringBuilder의 reverse()를 사용하여 풀었다. 팰린드롬은 앞으로 읽어도 뒤로 읽어도 동일하므로 앞으로 읽은 경우 str.charAt(i)와 뒤로 읽은 경우 sb.charAt(i)가 다른 경우 ans = 0으로 변경하게 설정하였다. 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String str = sc.next();
		sc.close();
		int len = str.length();
		int ans = 1;
		
		StringBuilder sb = new StringBuilder(str);
		sb.reverse();
		
		for(int i=0;i<len/2;i++) {
			if(str.charAt(i) != sb.charAt(i)) {
				ans = 0;
			}
		}
		System.out.println(ans);
		
	}
}

 

 

728x90