Algorithm/Baekjoon
[Python3] 백준(Baekjoon) A와B 12904
앵도라지
2023. 4. 4. 21:44
문제 :
수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.
이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.
- 문자열의 뒤에 A를 추가한다.
- 문자열을 뒤집고 뒤에 B를 추가한다.
주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오.
접근 :
그리디는 접근이 오래걸리는 문제인 것 같다. 접근하면 코드는 금방 풀리는데, 문제를 이해하고 푸는 방법을 설정하기까지 고민을 했다.
T리스트에서 A가 마지막일 때와, B가 마지막일 때를 조건으로 나눠서 S와 완전히 동일하게 되면 1을 출력하고, T가 전부 삭제될 때까지 S와 동일해지지 않으면 0을 출력하는 방식으로 구현하였다.
풀이 :
import sys
input = sys.stdin.readline
S = list(input().strip())
T = list(input().strip())
while T:
if T==S:
print(1)
sys.exit() #조건 부합 -> 프로그램 아예 종료해버림
if T[-1]=='A': # 마지막이 A이면
T.pop() #삭제
elif T[-1]=='B': # 마지막이 B이면
T.pop()
T.reverse()
print(0)