본문 바로가기

Algorithm/Baekjoon

(Java) [Baekjoon 10988 - 팰린드롬인지 확인하기] - 2024. 3. 6.(수)

문제  

알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.

팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. 

level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.

입력

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력

첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.


BOJ10988.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ10988 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        final String word = br.readLine();
        final String reverserWord = new StringBuilder(word).reverse().toString();
        final int isPalindrome = word.equals(reverserWord) ? 1 : 0;

        br.close();
        System.out.println(isPalindrome);
    }
}

 

StringBuilder 클래스의 reverse() 함수를 사용하여 문자열을 뒤집어준 뒤 비교했다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ10988 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        final String word = br.readLine();
        int ans = 1;

        for(int i = 0; i < word.length() / 2; i++) {
            if(word.charAt(i) != word.charAt(word.length() - 1 - i)) {
                ans = 0;
                break;
            }
        }
        System.out.println(ans);
    }
}

이 외에 반복문을 사용하여 비교하는 것 또한 해봤다.

 

두 방법의 코드의 시간과 메모리 사용량이 크게 다르지 않은 것을 확인했다.

출처 : Baekjoon online judge, https://www.acmicpc.net/problem/10988