본문 바로가기

알고리즘(백준 등) 공부

SWEA 20955. XY 문자열 1

X, Y로만 채워진 두 문자열에 대해서 첫번째 문자열을 오른쪽 끝에 X를 추가하거나 뒤집은 후 Y를 추가하는 작업들을 적절히 수행하여 두번째 문자열을 만들 수 있는지 확인하는 문제이다.

 

두번째 문자열을 역으로 오른쪽 끝에서 X면 X를 제거하기, Y라면 Y를 제거 후 뒤집기 작업을 하여 첫번째 문자열의 길이가 될 때 까지 반복 후 나온 문자열과 첫번째 문자열을 비교하여 같으면 가능하고 다르다면 불가능하게 된다.

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 tc = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        for(int i=1; i<= tc; i++) {
            sb.append('#').append(i).append(' ');
            String s = br.readLine(), e = br.readLine();
            StringBuilder word = new StringBuilder(e);
            while(word.length() > s.length()) {
                if(word.charAt(word.length()-1) == 'X') {
                    word.deleteCharAt(word.length()-1);
                } else {
                    word.deleteCharAt(word.length()-1);
                    word = word.reverse();
                }
            }
            if(s.equals(word.toString())) {
                sb.append("Yes");
            } else {
                sb.append("No");
            }
            sb.append('\n');
        }
        br.close();
        System.out.print(sb);
    }
}

 

'알고리즘(백준 등) 공부' 카테고리의 다른 글

SWEA 20731. 서로소 그리드  (0) 2026.04.25
SWEA 20728. 공평한 분배 2  (0) 2026.04.25
SWEA 21131. 행렬정렬  (1) 2026.04.23
SWEA 21426. 흰 종이와 검은 종이  (0) 2026.04.23
SWEA 26504. MST 만들기  (0) 2026.04.22