주어진 B의 텍스트에1. 문자열의 뒤에 A가 있다면 A를 제거한다.2. 문자열의 뒤에 B가 있다면 B를 제거하고 문자열을 reverse()한다.이 조건을 B 텍스트의 길이가 A의 길이보다 큰 경우 반복한다.
코드에 자세한 주석을 달아두었다.
// T의 길이가 S보다 작아질 경우 종료
while(T.length() >= S.length())
{
// 마지막 글자 확인
if(T.charAt(T.length()-1) == 'A')
{
// 마지막 글자인 A제거
T = T.substring(0, T.length()-1);
}
else if(T.charAt(T.length()-1) == 'B')
{
// 마지막 글자인 B제거 후, 문자열 reverse
T = T.substring(0, T.length()-1);
StringBuffer sb = new StringBuffer(T);
T = sb.reverse().toString();
}
if(T.equals(S))
{
System.out.println(1);
return;
}
}
System.out.println(0);
T.length() >= S.length() 의 경우에 반복하며 변환해가는 T의 길이가 S의 길이보다 작아지면 루프를 종료한다.
마지막 글자를 확인해가며 위의 조건을 반복하고 T 와 S가 같다면 1을 출력, 같지 않은 상태로 루프를 종료한다면 0을 출력하면 된다.
전체 코드는 아래와 같다.
static FastReader scan = new FastReader();
static StringBuilder sb = new StringBuilder();
static String S,T;
static void input()
{
S = scan.nextLine(); T = scan.nextLine();
}
static void pro()
{
// T의 길이가 S보다 작아질 경우 종료
while(T.length() >= S.length())
{
// 마지막 글자 확인
if(T.charAt(T.length()-1) == 'A')
{
// 마지막 글자인 A제거
T = T.substring(0, T.length()-1);
}
else if(T.charAt(T.length()-1) == 'B')
{
// 마지막 글자인 B제거 후, 문자열 reverse
T = T.substring(0, T.length()-1);
StringBuffer sb = new StringBuffer(T);
T = sb.reverse().toString();
}
if(T.equals(S))
{
System.out.println(1);
return;
}
}
System.out.println(0);
}
public static void main(String[] args)
{
input();
pro();
}
급하게 조사하고 정리하다보니 부족하거나 틀린 내용이 있을 수도 있는데 댓글로 달아주시면 감사하겠습니다!