반응형
풀이
문자열 S에 할 수 있는 연산은 다음과 같다.
만약 문자열 S에서 문자열 T를 만들 수 있는지 체크한다면 위의 두 가지 연산을 모두 수행해 봐야 할 것이다. 하지만 반대로 문자열 T에서 문자열 S가 될 수 있는지를 체크하면 현재 문자열 T의 맨 뒤에 문자가 'A'인지 'B'인지에 따라서 한 가지 연산만 하면 된다.
문제에서 주어진 위의 예제를 살펴보자. ABBA를 한 자리의 문자열로 바꾸려면 다음과 같은 작업이 행해진다.
- 맨 뒤의 문자를 제거한다. ABBA의 맨 뒤의 문자가 A이므로 ABB가 되고 문자는 뒤집지 않아도 된다.
- ABB의 맨 뒤의 문자를 제거한다. 뒤의 문자가 B이므로 AB가 되고 이를 뒤집으면 BA가 된다.
- BA의 맨 뒤의 문자를 제거한다. 뒤의 문자가 A이므로 B가 되고 문자는 뒤집지 않아도 된다.
위의 과정을 진행하고 나면 두 문자열 S와 T가 같은 길이를 가진 문자열이 되고 두 문자열 모두 'B'로 같음을 알 수 있다.
코드
if __name__ == '__main__':
S = input()
T = input()
while len(S) != len(T):
if T[-1] == 'A': # 맨 뒤의 문자가 A이면 문자만 제거하고 뒤집지 않아도 된다.
T = T[:len(T) - 1]
else: # 맨 뒤의 문자가 B이면 문자 제거 후 문자열을 뒤집는다.
T = T[:len(T) - 1]
T = ''.join(reversed(T))
if S == T:
print(1)
else:
print(0)
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
1253. 좋다 (Python) (0) | 2022.07.13 |
---|---|
19238. 스타트 택시 (Python) (0) | 2022.07.13 |
16724. 피리 부는 사나이 (Python) (0) | 2022.07.11 |
2208. 보석 줍기 (Python) (0) | 2022.07.06 |
14391. 종이 조각 (Python) (0) | 2022.07.06 |
댓글