백준 10988 팰린드롬인지 확인하기 java 문제풀이
문제: https://www.acmicpc.net/problem/10988
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level
-> 팰린드롬
backjoon
-> no 팰린드롬
이효리
-> 팰린드롬 (거꾸로 해도 이효리)
다양한 방법으로 풀 수 있다. character 배열에 넣고 (첫번째 원소 == 마지막 원소) 를 비교해 가면서 인덱스를 증감 시켜도 되고, Deque 자료구조를 사용해 배열과 같은 원리로 풀 수도 있고, 입력 문자열을 reverse 하여 비교하여도 된다.
아래는 Deque을 사용한 기본적인 풀이. Deque을 사용하면 인덱스를 증감 시키는 것에 신경을 안 써도 되어서 좋다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Deque<String> deque = new LinkedList<>(Arrays.asList(br.readLine().split("")));
boolean isPalindrome = true;
while (deque.size()>1) {
if (!deque.removeFirst().equals(deque.removeLast())) {
isPalindrome = false;
break;
}
}
System.out.println(isPalindrome?"1":"0");
}
}
아래는 문자열 reverse를 이용한 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
String reverse = new StringBuilder(input).reverse().toString();
System.out.println(input.equals(reverse)?"1":"0");
}
}
아래는 Deque과 Stream API를 사용한 풀이. Stream을 쓰는게 적절한 문제는 아니지만 한창 배우는 중이라 연습 겸 써 보았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Deque<String> deque = new LinkedList<>(Arrays.asList(br.readLine().split("")));
boolean isNotPalindrome = IntStream.range(0, deque.size() / 2)
.anyMatch(x -> !deque.removeFirst().equals(deque.removeLast()));
System.out.println(isNotPalindrome?"0":"1");
}
}
Java 좋아 👍