[BOJ]백준 1259번: 팰린드롬수(JAVA)

ho's·2022년 4월 29일
0

문제

말해말

아좋다좋아

수박이박수

다시합창합시다

와 같이 앞으로, 뒤로 말해도 똑같은 수를 팰린드롬수라고 한다.
이를 구하는 코드를 작성해보자.
단 0을 입력하면 프로그램은 종료된다.

풀이

  • for문을 이용해 프로그램을 돌리는 것 보다는 while문을 사용하자.
  • 팰린드롬수가 될 조건에 대해 생각해보자.
  1. 위의 문제 조건은 정수의 형태만 주어지므로, 문자열로 정수의 값을 입력받는다.

  2. charAt을 사용해, 입력한 문자열의 index를 확인하자.

  3. 팰린드롬수의 조건을 만족하면 출력을 해야하므로 true, false를 이용해 나타내자.

  4. "0" 이 입력되면 프로그램을 종료시켜야 한다.

소스코드

문제를 풀다가 0을 입력하면 종료되는 코드를 작성 했을때,
if(input == "0") break; 라는 코드를 작성했어서 프로그램이 종료되지 않았었다.

String 클래스에서 == equals에 대한 차이

== 는 주소값을 비교한다.
equals는 값을 비교한다.


다른 분들의 풀이

https://intrepidgeeks.com/tutorial/java-bojun-1259-falin-rider-java

다른 방법으로 풀이방법이 궁금해서 찾아보다가, linkedlist를 이용해 푼 것을 보았다.

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();
	}
}

LinkedList 2개를 만들어
LinkedList1 는 앞에서 부터 저장을 하고,
LinkedList2 는 뒤에서 부터 저장을 한다.
하나씩 꺼내어 비교를 한다!

아는 만큼 보이는 것 같다.

어려워 보이는 것이 있어도 천천히 다가가면 친해지는 것 같다.

profile
그래야만 한다

0개의 댓글