[백준] 12904번 - A와 B

chanyeong kim·2022년 7월 16일
0

백준

목록 보기
150/200
post-thumbnail

📩 출처

문제

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.

이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.

  • 문자열의 뒤에 A를 추가한다.
  • 문자열을 뒤집고 뒤에 B를 추가한다.

주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 999, 2 ≤ T의 길이 ≤ 1000, S의 길이 < T의 길이)

출력

S를 T로 바꿀 수 있으면 1을 없으면 0을 출력한다.

👉 생각

  • 이 문제는 T의 마지막 문자열이 A 인지 B인지를 두고 고민을 해야 한다. 마지막 문자열이 A라면 무조건 첫번째 연산이 이루어진 상태여야 하고 B라면 그 반대여야 한다.
  • 즉, 마지막 값이 무엇인지에 따라 S를 T로 바꾸는 것이 아닌 T를 S로 바꿀 수 있는지 마지막 값을 통해 T의 값을 바꿔 가면서 마지막에 S와 T가 같은지 비교해주면 된다!
def A(word):
    return word[:-1]

def B(word):
    word = word[:-1]
    return word[::-1]

s = input(); t = input()
while len(s) != len(t): t = A(t) if t[-1] == 'A' else B(t)
print(1 if t == s else 0)

0개의 댓글