본문 바로가기
코딩테스트

[백준] 12904번 'A와 B' - Java

by CuckooBird 2023. 7. 13.

문제


코드

맞았습니다가 뜬 코드입니다. - 메모리 14420KB | 시간 148ms | 코드 길이 928B

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

public class Main {
	private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	
	public static void main(String[] args) throws IOException {
		String s = bf.readLine();
		String t = bf.readLine();
		
		ArrayList<Character> T = new ArrayList<>();
		
		for(int i = 0 ; i < t.length() ; i++) {
			T.add(t.charAt(i));
		}
		
		while(s.length() < T.size()) {
			if(T.get(T.size() - 1) == 'A') {
				T.remove(T.size() - 1);
			} else {
				T.remove(T.size() - 1);
				Collections.reverse(T);
			}
		}
		
		StringBuilder sb = new StringBuilder();
		for(Character ch : T) {
			sb.append(ch);
		}
		
		String result = sb.toString();
		
		if(result.equals(s)) {
			bw.write("1");
		} else {
			bw.write("0");
		}
		
		bf.close();
		bw.flush();
		bw.close();
	}
}

입력받은 T를 ArrayList에 Character 형으로 넣어서 맨 끝이 A인지 B인지에 따라 맨 끝을 그냥 빼느냐, 빼고 리스트를 뒤집느냐를 갈랐습니다.

ArrayList의 길이가 s와 같아진다면 수행을 끝내고 같은 문자열이 되었는지 확인합니다.

거꾸로 수행한다는 것이 포인트였던 것 같습니다.


Search 🔍