알고리즘/그리디 알고리즘

백준 12904번 : A와 B java

LDY3838 2022. 8. 11. 20:32
반응형

이 문제는 조건에 맞게 문자열을 변형시켰을 때 S를 이용하여 T를 만들 수 있는지 확인하는 문제입니다.

이 문제를 풀기 위해서 저는 T를 변형시켜 S가 될 수 있는지 확인했습니다.

T의 마지막 문자가 A일 경우 문자를 제거하였고 마지막 문자가 B일 경우 이 문자를 제거한 후 문자열을 뒤집었습니다.

이 과정을 T와 S의 길이가 같아질 때까지 반복한 후 두 문자열이 같은지 확인하면 이 문제를 해결할 수 있습니다.


import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] inputA = br.readLine().split("");
        String[] inputB = br.readLine().split("");

        List<String> A  = new ArrayList<>();
        List<String> B = new ArrayList<>();

        Collections.addAll(A, inputA);
        Collections.addAll(B, inputB);

        while(A.size() != B.size()){
            String last = B.get(B.size()-1);

            if(last.equals("A"))
                B.remove(B.size()-1);
            else{
                B.remove(B.size()-1);
                Collections.reverse(B);
            }
        }

        boolean flag = true;

        for(int i = 0; i<A.size(); i++){
            if(!A.get(i).equals(B.get(i))){
                flag = false;
                break;
            }
        }

        if(flag)
            System.out.println(1);
        else
            System.out.println(0);
    }
}
반응형