본문 바로가기
Problem Solving/Baekjoon

[백준] 4096 팰린드로미터 - Brute Force / Java

by graycode 2024. 4. 26.

 문제 링크

 

4096번: 팰린드로미터

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 현재 승환이의 주행 거리계에 적혀있는 수가 주어진다.이 숫자는 2자리와 9자리 사이(포함)이다. 예를

www.acmicpc.net

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;

public class Main {

    static Deque<Integer> dq = new ArrayDeque<>();
    static int len;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        String s;
        while (!(s = br.readLine()).equals("0")) {
            len = s.length();

            int n = Integer.parseInt(s), cnt = 0;
            while (!isPalindrome(n++)) cnt++;

            sb.append(cnt).append("\n");
        }

        bw.write(sb.toString());
        bw.flush();
    }

    private static boolean isPalindrome(int n) {
        dq.clear();
        int i = len - ((int) Math.log10(n) + 1);

        do dq.offer(n % 10); while ((n /= 10) != 0);
        while (i-- > 0) dq.offer(0);

        while (dq.size() > 1) if (!dq.poll().equals(dq.pollLast())) return false;

        return true;
    }

}

댓글