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 |