[Java] 백준 10988번 [팰린드롬인지 확인하기] 자바

: ) YOUNG·2022년 4월 10일
2

알고리즘

목록 보기
91/370

백준 10988번
https://www.acmicpc.net/problem/10988


문제

알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.

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

level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.


입력

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


출력

첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.


예제 입력

level

baekjoon

예제 출력

1

0

생각하기

문자열의 중간을 기점으로 앞과 뒤가 같은지 하나씩 비교하면 됩니다.

동작

for(int i=0; i<length/2; i++)	{
			char front = str.charAt(i);
			char back = str.charAt( (length-1)-i );
			
			if(front != back) {
				System.out.println(0);
				return;
			}
		}	

문자열의 중간을 기점으로 나눠서 비교하기 위해서
문자열의 길이인 legth변수를 만들어주고 length / 2까지만 반복합니다.

front는 앞에서 부터 시작해서 한 글자씩 분리하고
back은 뒤에서 부터 한 글자씩 분리해서

frontback을 비교해서 두 글자가 다를 경우 곧바로 0을 출력하고 return을 합니다.

for문을 모두 통과했을 경우는 팰린드롬이 맞다고 판단해서 1을 출력합니다.



TMI

팰린드롬 유형도 꼬아서 출제하면 어렵던데 많이 풀어보자




코드


import java.util.*;
import java.io.*;
	
public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = br.readLine();
		
		palindrome(str);
		
	} // End of main
	
	static void palindrome(String str) {	
		int length = str.length();
		
		for(int i=0; i<length/2; i++)	{
			char front = str.charAt(i);
			char back = str.charAt( (length-1)-i );
			
			if(front != back) {
				System.out.println(0);
				return;
			}
		}
	
		System.out.println(1);
		
	} // End of palindrome
} // End of class 

0개의 댓글