알고리즘
문자열 S를 T로 바꾸는 것은 생각보다 어렵다
따라서 오히려 T를 S로 만드는 방법으로 바꾸어 풀었다.
문자열의 끝에 A와 B를 추가하는 방식이기 때문에
반대로 문자열 끝을 검사하여 A와 B를 삭제 해 나가는 방식이다.
A는 삭제하고 그대로 다시 검사하지만
B는 뒤집고 추가하기 때문에 삭제하고 뒤집어준다.
S와 T의 길이가 같아지면 반복을 종료하고 비교하여 결과를 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String t = br.readLine();
while (s.length() < t.length()) { //둘의 문자열 길이가 같아질때 까지 반복
int end = t.length()-1; // 문자열 길이끝을 저장
if(t.charAt(end) == 'A') { //끝이 A일 경우
t = t.substring(0, end); //문자열 끝을 제외한 문자열을 다시 저장
}else if(t.charAt(end) == 'B') { //끝이 B일 경우
t = t.substring(0,end); //문자열 끝을 제외한 문자열을 다시 저장
end -= 1; //길이 -1
String reverse = ""; //문자열을 뒤집을 문자열
for (int i = end; i >= 0; i--) { //문자열 길이만큼 반복
reverse += t.charAt(i); //문자열의 뒤부터 저장
}
t = reverse; //뒤집은 문자열을 원래 문자열에 저장
}
}
if(t.equals(s)) { //만들려던 문자열과 같은지 확인
System.out.println(1); //같은 경우
}else {
System.out.println(0); //다른경우
}
}
}
'코딩테스트' 카테고리의 다른 글
백준 돌 게임6(9660번) (0) | 2022.08.31 |
---|---|
백준 a^b(10827번) (0) | 2022.08.31 |
백준 카드 정렬하기(1715번) (0) | 2022.08.31 |
백준 현욱은 괄호왕이야!!(15926번) (0) | 2022.08.30 |
백준 스카이라인(1863번) (0) | 2022.08.30 |