
-Code
import java.io.*;
public class BOJ10176 {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
for (int i = 0; i < cnt; i++) {
String line = br.readLine().toLowerCase();
// 특수문자 제외
StringBuilder letters = new StringBuilder();
for (char ch : line.toCharArray()) {
if (Character.isLetter(ch)) {
letters.append(ch);
}
}
System.out.println(isOpposite(letters.toString()) ? "Yes" : "No");
}
}
private static boolean isOpposite(String line) {
// 현재 문자열의 알파뱃들 갯수 저장
int[] alpaCnt = new int[26];
for (char ch : line.toCharArray()) {
alpaCnt[ch - 'a']++;
}
// 13가지 경우 확인해 대응되는 알파뱃이 맞지 않으면 false
for (int i = 0; i < 13; i++) {
if (alpaCnt[i] != alpaCnt[25 - i]) {
return false;
}
}
return true;
}
}
문제를 잘못 이해해서 특정 위치에 있는 문자끼리 비교해서 index가 같은것끼리 전부 맞아야 하는줄 알고 로직을 짜서 틀렸습니다. 정확한 해석을 보니 자신과 대응되는 알파벳이 모드 존재하는 경우를 찾으면 돼서 문자 갯수를 저장해서 위치를 비교하는 문제였습니다. 그래서 전체를 검사해도 13번 반복이라 모든 문자을 저장하고 검사하는 식으로 해결했습니다
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 28345번 Image Filter (0) | 2026.04.10 |
|---|---|
| [프로그래머스/Java] 연속된 부분 수열의 합 (0) | 2026.04.09 |
| [프로그래머스/Java] 큰 수 만들기 (0) | 2026.04.09 |
| [백준/Java] 34386번 Tic-Tac-Toe AI (0) | 2026.04.08 |
| [프로그래머스/Java] 서버 증설 횟수 (0) | 2026.04.07 |