[Java] 백준 1259번 [팰린드롬수] 자바

: ) YOUNG·2021년 12월 30일
2

알고리즘

목록 보기
29/422
post-thumbnail

백준 1259번
https://www.acmicpc.net/problem/1259

문제

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

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


생각하기

문제 풀고 나서 TMI를 조금 해보자면
'이 문제 풀었었던거 같은데..' 했지만 '일단 풀자' 하고 풀었는데,

제출할 때 보니까 진짜 딱 한달 전에 풀었었음..
금붕어 수준의 기억력..

근데 신기했던 점이 요즘 알고리즘을 문제를 자주 풀어서 그런지 실력이 조금 늘었다는 기분?

한달 전 보다 코드가 훨씬 간결해지고
메모리나 시간 부분에서도 향상된게 결과로 보여서
별것도 아니지만 괜히 뿌듯했음 ㅎㅎ


코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		LinkedList<Character> linkedList = new LinkedList<>();
		LinkedList<Character> linkedList2 = new LinkedList<>();
		
		// 0 일때까지 반복
		int num;
		while((num = Integer.parseInt(br.readLine())) != 0) {
			String temp = Integer.toString(num);
			
			for(int i=0; i<temp.length(); i++) {
				linkedList.add(temp.charAt(i));
			}
			
			for(int j=temp.length()-1; j>=0; j--) {
				linkedList2.add(temp.charAt(j));
			}
						
			for(char ch : linkedList) {
				char ch2 = linkedList2.poll();

				if(ch != ch2) {
					System.out.println("no");
					break;
				}
				else if(linkedList2.isEmpty()) {
					System.out.println("yes");
				}
			}

			linkedList.clear();
			linkedList2.clear();
		}

		br.close();
	}
}

0개의 댓글