풀이방법
사용된 것:
Deque
2022.04.17
주어진 수를 한 글자씩 덱에 넣는다.
boolean타입 변수 v를 선언하고 true로 초기화한다.
덱의 양쪽 끝에서 글자를 하나씩 poll() 해와서 두 글자를 비교하는 과정을
덱이 텅 비거나 덱에 글자가 하나 남을 때까지 반복한다.
꺼내온 두 글자가 동일하면 continue한다.
한 번이라도 두 글자가 서로 다르면 v의 값을 false로 바꾸고 즉시 반복문을 끝낸다(break).
두 글자가 다른 적이 한 번도 없다면 v의 값이 바뀌지 않는다. 따라서 v가 true로 남은 채 반복문이 끝난다.
따라서 주어진 수가 팰린드롬수라면 v는 true로 남고, 그렇지 않으면 v는 false가 된다.
코드
Java(2022.04.17)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true) {
//수 읽어오기
String str = br.readLine();
//0이면 종료
if(str.equals("0")) break;
//덱에 한 글자씩 넣기
Deque<Character> deque = new LinkedList<Character>();
char[] num = str.toCharArray();
for(char c : num) deque.addLast(c);
//팰린드롬 수인지 점검
boolean v = true;
while(!deque.isEmpty()) {
if(deque.size() == 1) break;
if(deque.pollFirst() == deque.pollLast()) continue;
else { v = false; break; }
}
if(v) sb.append("yes");
else sb.append("no");
sb.append(System.lineSeparator());
}
System.out.print(sb);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#10816 : 숫자 카드 2 (0) | 2022.04.19 |
---|---|
#11050 : 이항 계수 1 (0) | 2022.04.19 |
#2798 : 블랙잭 (0) | 2022.04.17 |
#2164 : 카드2 (0) | 2022.04.17 |
#1978 : 소수 찾기 (0) | 2022.04.17 |