본문 바로가기

알고리즘(백준 등) 공부

SWEA 10804. 문자열의 거울상

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