TIL/알고리즘

[JAVA] 백준 | 13235 팰린드롬

쑤키다요 2025. 4. 2. 22:15

📝 TIL

- [백준] 13235 팰린드롬

https://www.acmicpc.net/problem/13235

 

제한사항

시간제한 1초

메모리 제한 128MB

 

입출력 예

입력#1

owo

 

출력#1

true

 

 

입력#2

zzzzzzzzo

 

출력#2

false

🦔 설계 및 시도

사실 팰린드롬은 너무 유명한 문제라 다른 문자열 문제들에 비해서는 쉽게 풀었다

분명히 예전에 팰린드롬 만들기도 했던 거 같은데,

지금 머릿속으로 생각해보니 만들기는 못할 거 같다! 하하

 

무튼! 팰린드롬의 경우 구현 방법은 간단하다.

앞에서부터 읽어도, 뒤에서부터 읽어도 똑같아야 하기 때문에

앞에서 비교 -> <- 뒤에서 비교

를 진행해 다를 경우 false를 반환하면 된다.

 

오히려 자바 시작하고 프로그래머스나 리트코드로만 풀어서 main 메서드 작성이 낯설었다.

다른 플랫폼과 구조를 동일하게 진행하기 위해 solution() 메서드를 따로 분리해 작성했다.

 

 

 

🔥 풀이에 사용된 개념

BufferedReader()

- 표준 입출력을 빠르게 처리하기 위한 Java의 입력 방식

- Scanner보다 빠른 속도로 처리가 가능해 알고리즘 풀이에 주로 사용됨

- readLine을 이용하여 입력받을 수 있다.

 

// 예외처리 throws IOException 필수
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();

 

 

 


 

💡 풀이 소스 코드

 

시간복잡도 :  O(n)

공간복잡도 : O(1)

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine(); 
        System.out.println(solution(str));      
    }

    static boolean solution(String str){
        int n = str.length();
         for(int i=0; i<n/2; i++){
            if(str.charAt(i)!=str.charAt(n-i-1))
                return false;
        }
        return true;
    }
}



 

[다른 풀이]

양끝에서 비교하는 풀이 말고 StringBuilder를 사용하는 풀이도 있다!

이 경우 시간복잡도는 동일하게 O(n), 공간복잡도가 O(n)이 된다.

static boolean solution(String str){
    return str.equals(new StringBuilder(str).reverse().toString());
}

🚀 새로 배운 내용

- BufferedReader를 이용하여 빠르게 입출력을 처리할 수 있다.

 

 


😺  느낀점

- 입력단 처리하는 걸 사실 겁먹고 회피했는데 생각보다 어렵지 않다.

- 실제로 파일 입출력, 입력은 당연하니 ..! 자주 사용해서 익숙해지자.

 

 

 


*소스 코드는 다음 깃허브에 올라옵니다 -
 https://github.com/s0ooo0k/Algorithm_Study

 

GitHub - s0ooo0k/Algorithm_Study: Algorithm Study 문제 및 풀이

Algorithm Study 문제 및 풀이. Contribute to s0ooo0k/Algorithm_Study development by creating an account on GitHub.

github.com