라이브러리는 도서관 아닌가요

백준 (BOJ) 12904 A와 B java 그리디 본문

알고리즘 문제

백준 (BOJ) 12904 A와 B java 그리디

veryhi 2022. 6. 28. 19:52

https://www.acmicpc.net/problem/12904

 

12904번: A와 B

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수

www.acmicpc.net

 

꿀 문제

 

추가가 아닌 제거로 역접근하고,

 

각 단계마다 문자열을 하나씩 제거한다고 생각하면 쉽다. B의 경우에는 추가로 뒤집기하면 된다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

        index = target.length()-1;

        subtract();
    }

    //* 거꾸로 연산: 뒤에 A 빼기, 뒤에 B 빼고 뒤집기
    static void subtract(){
        while (target.length() != origin.length()){
            if(target.charAt(index) == 'A'){
                target = target.substring(0, index);
            }
            else{ // B다?
                target = target.substring(0, index);
                target = new StringBuilder(target).reverse().toString();
            }

            --index;
        }

        if(target.equals(origin)){
            System.out.print(1);
        }
        else{
            System.out.print(0);
        }
    }
}
Comments