JAVA/Coding Test

[JAVA] 백준 12904 A와 B_데크

오늘도개발 2024. 7. 2. 20:50

 

 문제 : 

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

 

 

접근 : 

 

  - 2번째 입력받은 문자열을 deq에 넣는다.

 

  - reverse 가 false 인 경우 마지막 문자를 뽑아 A 이면 다음으로 진행, B 이면 reverse를 ture 로 반전

 

  - reverse 가 true 인 경우 첫번째 문자를 뽑아 A 이면 다음으로 진행, B 이면 reverse를 false 로 반전

 

  - 1번째 입력 받은 문자열과 deq의 길이가 같아질때 까지 반복실행

 

  - 만약 길이가 같아지면 reverse 가 true 이면 반전하여 동일한지 비교, 만약 false 이면 그대로 같은지 비교한다.

 

 

 

 

코드 구현 :

 

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 target = br.readLine();
        String input = br.readLine();
        Deque<Character> deq = new LinkedList<>();
        for(int i = 0 ; i < input.length() ; i++) deq.offer(input.charAt(i));

        boolean is_reverse = false;
        char next;

        while(deq.size() != target.length()) {
            next = is_reverse ? deq.pollFirst() : deq.pollLast();
            if(next == 'B') is_reverse = !is_reverse;
        }

        StringBuilder sb = new StringBuilder();
        if(is_reverse){
            while(deq.size() > 0) sb.append(deq.pollLast());
        }else{
            while(deq.size() > 0) sb.append(deq.pollFirst());
        }

        System.out.print(sb.toString().equals(target) ? 1 : 0);
        br.close();
    }
}