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");
}
}
* 너무 간단하게 풀려서 다른 풀이를 확인해봤는데 역배열을 하여 비교하거나 배열의 반틈만 비교하는 방법이 있었다.
반응형