[백준, BOJ 12919] A와 B 2 (java)
Problem Solving/BOJ

[백준, BOJ 12919] A와 B 2 (java)

728x90

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

 

12919번: A와 B 2

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

www.acmicpc.net

728x90

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Main {

	public static void main(String[] args) throws Exception{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringBuilder S = new StringBuilder(br.readLine());
		StringBuilder T = new StringBuilder(br.readLine());
		
		int result = 0;
		Queue<StringBuilder> q = new LinkedList<>();
		q.add(T);
		
		while(!q.isEmpty()) {
			StringBuilder sb1 = q.poll();
			StringBuilder sb2 = new StringBuilder(sb1);
			
			char[] c1 = sb1.toString().toCharArray();
			if(c1[c1.length - 1] == 'A') {
				sb1.delete(c1.length - 1, c1.length);
				if(sb1.length() == S.length() && sb1.toString().equals(S.toString())) {
					result = 1;
					break;
				}
				else if(sb1.length() > S.length()) q.add(sb1);
			}
			
			char[] c2 = sb2.toString().toCharArray();
			if(c1[0] == 'B') {
				sb2.reverse().delete(c2.length - 1, c2.length);
				if(sb2.length() == S.length() && sb2.toString().equals(S.toString())) {
					result = 1;
					break;
				}
				else if(sb2.length() > S.length()) q.add(sb2);
			}
		}
		
		System.out.println(result);
	}

}
728x90