[백준/Java] 1259번 문제 해설 및 답안

이재윤·2024년 1월 9일

백준

목록 보기
7/25

백준 1259번 자바 풀이

문제는 백준 사이트와 똑같으니, 해설부터 보셔도 됩니다.

문제

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

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

입력

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

출력

각 줄마다 주어진 수가 팰린드롬수면 'yes', 아니면 'no'를 출력한다.

예제

입력
121
1231
12421
0

출력
yes
no
yes

해설

무한 반복하는 while문에 정수를 문자열(s)로 입력 받아서 0이면 종료합니다.

tf라는 불리언 타입의 변수를 true로 초기화시켜주고, 이 변수는 yes와 no를 골라주는 역할을 합니다.

half라는 s의 길이에 반이 되는 변수, end라는 s의 마지막 인덱스 번호를 가지고 있는 변수를 선언합니다. 중간번호(half)에서 이전(i)과 이후(end)를 비교하는 작업 때문에 이와 같은 변수를 선언했습니다.

for문을 사용하여 0에서 half까지 반복하고, end는 1씩 줄어듭니다. 이 때, s의 i번째와 s의 end번째가 다르면 tf는 false가 되고, for문을 종료합니다.

마지막으로 삼항 연산자를 이용하여 tf가 true이면 yes, false이면 no를 출력합니다.

  1. 무한 반복하는 while문에 정수를 문자열(s)로 입력 받아서 0이면 종료
  2. tf를 true로 초기화 => yes와 no를 골라주는 역할
  3. half를 s의 길이 절반으로 초기화, end를 s의 길이 - 1로 초기화
  4. 0에서 half까지 반복, end는 1씩 감소. s의 i번과 s의 end번이 다르면 tf는 false가 되고, 반복 종료
  5. 삼항 연산자로 tf가 true이면 yes, false이면 no를 출력

답안

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		while(true) {
			boolean tf = true;
			String s = sc.next();
			if (s.equals("0")) break;
			int half = s.length() / 2;
			int end = s.length() - 1;
			for(int i = 0; i < half; i++) {
				if (s.charAt(i) != s.charAt(end)) {
					tf = false;
					break;
				}
				end--;
			}
			System.out.println(tf ? "yes" : "no");
		}
	}
}
profile
부족한 점이 많습니다. 피드백은 환영입니다!

0개의 댓글