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

import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder();
for(int i = str.length() - 1; i >= 0; i--) {
sb.append(str.charAt(i));
}
if(str.equals(sb.toString())) {
System.out.println(1);
} else{
System.out.println(0);
}
}
}
알아서 뒤집어주는 메서드가 있지 않을까.? 생각은 들었지만 일단 당장은 모르니까 하나씩 뒤집어준 뒤 equals로 기존 문자열과 비교해줬다.
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder();
sb.append(str).reverse();
System.out.println(str.equals(sb.toString()) ? 1 : 0);
System.out.println(str.contentEquals(sb) ? 1 : 0);
}
}
지교수님께 여쭤보니 친절하게 알려주심
StringBuilder 내에 reverse()가 존재해서 바로 뒤집을 수 있다.
또, 참이면 1, 거짓이면 0 출력하는 조건식은 삼항연산자로 if문 없이 한 줄로 표현 가능
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
System.out.println(0);
return;
}
left++;
right--;
}
System.out.println(1);
}
}
생각지도 못했던 방법도 알려주심.
역순 문자열을 만들 필요 없이 양 끝의 문자를 순서대로 비교해서 절반까지 다 맞으면 1 출력하는 방법.
'Java' 카테고리의 다른 글
| [백준] 코딩테스트 문제 1316: 그룹 단어 체커 (0) | 2026.03.02 |
|---|---|
| [백준] 코딩테스트 문제 1157: 단어 공부 (0) | 2026.02.25 |
| [백준] 코딩테스트 문제 2444: 별 찍기 - 7 (0) | 2026.02.24 |
| [백준] 코딩테스트 문제 3003: 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2026.02.24 |
| [백준] 코딩 테스트 문제 25083: 새싹 (0) | 2026.02.24 |