b, d, p, q로 이루어진 문자열을 거울에 비치면 어떻게 변하는지 출력하는 문제이다. b는 d로, d는 b로, p는 q로, q는 p로 바뀌며 위치또한 반사될 경우 뒤집히게 된다.
맨 처음부터 끝까지 문자열을 순회하면서 뒤집은 위치에 뒤집은 문자로 변경해주면된다. 이를 위해 StringBuilder의 setChatAt을 사용하였다.
String line = br.readLine();
StringBuilder mirror = new StringBuilder(line);
for(int i=0; i<line.length(); i++) {
char c = line.charAt(i);
if(c == 'b') mirror.setCharAt(line.length()-1-i, 'd');
else if(c == 'd') mirror.setCharAt(line.length()-1-i, 'b');
else if(c == 'p') mirror.setCharAt(line.length()-1-i, 'q');
else mirror.setCharAt(line.length()-1-i, 'p');
}
sb.append(mirror.toString()).append('\n');
결과 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int tc = 1; tc <= T; tc++) {
sb.append('#').append(tc).append(' ');
String line = br.readLine();
StringBuilder mirror = new StringBuilder(line);
for(int i=0; i<line.length(); i++) {
char c = line.charAt(i);
if(c == 'b') mirror.setCharAt(line.length()-1-i, 'd');
else if(c == 'd') mirror.setCharAt(line.length()-1-i, 'b');
else if(c == 'p') mirror.setCharAt(line.length()-1-i, 'q');
else mirror.setCharAt(line.length()-1-i, 'p');
}
sb.append(mirror.toString()).append('\n');
}
br.close();
System.out.print(sb);
}
}'알고리즘(백준 등) 공부' 카테고리의 다른 글
| SWEA 10761. 신뢰 (0) | 2026.06.22 |
|---|---|
| SWEA 10762. 사탕 나누기 (0) | 2026.06.09 |
| SWEA 10912. 외로운 문자 (0) | 2026.06.08 |
| SWEA 10908. 짝수인 이항 계수 (0) | 2026.06.07 |
| SWEA 10965. 제곱수 만들기 (0) | 2026.06.07 |