JAVA

[JAVA] 1259번 팰린드롬수

merryna 2022. 8. 3. 11:01
반응형

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

 

1259번: 팰린드롬수

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

www.acmicpc.net

 

🌌 전체 코드

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

public class Main{
	public static void main(String args[]) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringBuilder sb2 = new StringBuilder();
		String str = "";

		while ((str = br.readLine()) != null && (Integer.parseInt(str) != 0)) {
			sb.setLength(0); //sb 객체 비우기
			String strReverse = sb.append(str).reverse().toString();

			if(str.equals(strReverse)) {
				sb2.append("yes" + "\n");
			} else {
				sb2.append("no" + "\n");
			}
		}
		System.out.println(sb2);
	}
}

나는 이 문제에서 StringBuilder를 적극 활용했다.

 

1. for문 배열 길이 신경 쓰기보다 EOF 체크를 하면서  while문을 돌렸고 0이라면 while문을 실행X

while ((str = br.readLine()) != null && (Integer.parseInt(str) != 0)) {
	...
}

 

2. sb 객체를 비우고 reverse() 메소드를 활용하여 input된 값과 비교

while ((str = br.readLine()) != null && (Integer.parseInt(str) != 0)) {
    sb.setLength(0); //sb 객체 비우기
    String strReverse = sb.append(str).reverse().toString();

    if(str.equals(strReverse)) {
        sb2.append("yes" + "\n");
    } else {
        sb2.append("no" + "\n");
    }
}

 

* 너무 간단하게 풀려서 다른 풀이를 확인해봤는데 역배열을 하여 비교하거나 배열의 반틈만 비교하는 방법이 있었다.

반응형