브론즈 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 |