본문 바로가기
Algorithm/백준

[PS / 백준] 12904. A와 B

by clean01 2024. 11. 8.

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

 

 

풀이

S가 T가 될 수 있는지를 따지지 않고 T가 S가 될 수 있는지를 따지면 되는 문제였다.

T가 S가 될 수 있는지를 따지면 경우가 딱 두가지로 나뉜다.

 

(i) T가 A로 끝남 => T의 맨 뒤에 있는 A를 떼면된다.

(ii) T가 B로 끝남 => T의 맨 뒤에 있는 B를 떼고 문자열을 뒤집는다.

 

위 두 경우의 연산을 T와 S의 길이가 동일해질 때까지 반복해주면 된다.

 

오랜만에 StringBuilder를 써보니까 메소드들이 잘 기억나지가 않았다.

delete(시작인덱스, 끝인덱스), reverse(), charAt() 정도는 꼭 기억해두자

전체 코드

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

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

    String S, T;
    S = br.readLine();
    T = br.readLine();

    StringBuilder sb = new StringBuilder(T);
    while(sb.length() != S.length()) {
      char last = sb.charAt(sb.length() - 1);
      if(last == 'A') { // 그냥 떼기
        sb.delete(sb.length() - 1, sb.length());
      } else {
        sb.delete(sb.length()-1, sb.length());
        sb.reverse();
      }
    }

    if(sb.toString().equals(S)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
  }
}

'Algorithm > 백준' 카테고리의 다른 글

[Java / 백준 ] 12851. 숨바꼭질  (2) 2024.11.20
[Java / 백준] 4781. 사탕 가게  (3) 2024.07.03
[백준 / Java] 2141. 우체국  (3) 2024.06.25
[백준 / Java] 14575. 뒤풀이  (0) 2024.06.18
[백준 / Java] 2665. 미로만들기  (2) 2024.06.11