문제
와 같이 앞으로, 뒤로 말해도 똑같은 수를 팰린드롬수라고 한다.
이를 구하는 코드를 작성해보자.
단 0을 입력하면 프로그램은 종료된다.
풀이
위의 문제 조건은 정수의 형태만 주어지므로, 문자열로 정수의 값을 입력받는다.
charAt을 사용해, 입력한 문자열의 index를 확인하자.
팰린드롬수의 조건을 만족하면 출력을 해야하므로 true, false를 이용해 나타내자.
"0" 이 입력되면 프로그램을 종료시켜야 한다.
소스코드
문제를 풀다가 0을 입력하면 종료되는 코드를 작성 했을때,
if(input == "0") break;
라는 코드를 작성했어서 프로그램이 종료되지 않았었다.
==
과 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 는 뒤에서 부터 저장을 한다.
하나씩 꺼내어 비교를 한다!