💻 Algorithm/Baekjoon

[JAVA] 백준 1259 - 팰린드롬수

dlalwl_jpg 2022. 7. 7. 17:31

브론즈 I

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

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

문제

어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다.

수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.


입력

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.


접근방법

문자열의 첫 문자와 끝 문자를 비교하여 다르면 check를 1로 변환하여 팰린드롬 수를 검사하였다.

반복문은 문자열 길이의 절반만 돌도록 설정하였다.


코드

package bj1295;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class bj1295 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String s = "";
		String[] p = new String[10000];
		int check = 0, index = 0;
		
		do {
			s = br.readLine(); //문자열 입력
			check = 0; //초기화
			
			//팰린드롬수 판별
			for(int i = 0; i < s.length() / 2; i++) { //문자열 길이의 절반만 반복
				
				if(s.charAt(i) != s.charAt(s.length() - i - 1)) { //맨처음 문자와 끝문자가 다르면
					check = 1; //check 1로 변환
				}
			}
			
			if(check == 1) //팰린드롬수가 아님
				p[index] = "no";
			
			else //팰린드롬수임
				p[index] = "yes";
				
			index++; //결과를 저장할 인덱스 증가
			
		} while(!s.equals("0")); //문자열이 0이 아니면 반복
		
		//결과 출력
		for(int i = 0; i < index - 1; i++) //맨 마지막 0은 출력하면 안되므로 index - 1까지만
			System.out.println(p[i]);
	}

}

NOTE

문자열은 '==' 등식을 사용하면 안 되고 .equals("")를 사용해야 한다.

 

'💻 Algorithm > Baekjoon' 카테고리의 다른 글

[JAVA] 백준 10773 - 제로  (0) 2022.07.08
[JAVA] 백준 1979 - 소수 찾기  (0) 2022.07.07
[JAVA] 백준 1920 - 수 찾기  (0) 2022.07.07
[JAVA] 백준 8958 - OX퀴즈  (0) 2022.07.01
[JAVA] 백준 2920 - 음계  (0) 2022.07.01