📝 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
'TIL > 알고리즘' 카테고리의 다른 글
[JAVA] 프로그래머스 | 181949 대소문자 바꿔서 출력하기 (0) | 2025.04.04 |
---|---|
[JAVA] 백준 | 3181 줄임말 만들기 (0) | 2025.04.02 |
[JAVA] 프로그래머스 | 12915 문자열 내 마음대로 정렬하기 (0) | 2025.04.02 |
[JAVA] 프로그래머스 | 181913 문자열 여러 번 뒤집기 (0) | 2025.04.02 |
[JAVA] 프로그래머스 | 81301 숫자 문자열과 영단어 (0) | 2025.04.01 |