문자열 구현 문제이다.
A와B로만 이루어진 문자열 2개가 주어지고 문자열 s를 문자열 t로 바꿀 수 있는지 판별하는 문제로
가능한 연산은 두 가지가 있다.
1. 문자열의 뒤에 A를 추가
2. 문자열을 뒤집고 뒤에 B를 추가
그런데, s에서 연산을 해서 t로 만드는 방법은 너무 많지않은가?
그래서 반대로 생각해보기로 했다.
이미 완성된 문자열에서 적용했던 연산을 거꾸로 한다면?
t에서 s를 만드는 것이 가능한지만 판별하면 s를 t로 만들 수 있는지 알 수 있다.
그래서 연산을 뒤집어 보았다.
1. 문자열의 뒤에 A를 삭제
2. 문자열 뒤의 B를 삭제하고 문자열 뒤집기
이렇게 했더니 정말 간단하게 문제를 풀 수 있었다.
#12904 A와 B
import sys
input = sys.stdin.readline
s = input().strip()
t = input().strip()
flag=False
while len(s) <= len(t):
if s == t:
flag= True
# 끝 문자열
x = t[-1]
t = t[:-1]
if x == 'A':
continue
elif x == 'B':
t = t[::-1]
#검사
if flag:
print(1)
else:
print(0)
* 모든 코드는 github에서 관리합니다. seinShin (SEIN SHIN) (github.com)
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
[python] 7490 - 0 만들기 (0) | 2023.06.15 |
---|---|
[python] 프로그래머스 Lv2. - [2018 KAKAO] 압축 (0) | 2023.06.15 |
[python] 11559 - Puyo Puyo (0) | 2023.06.09 |
[python] 14891 - 톱니바퀴 (0) | 2023.06.09 |
[python] 1976 - 여행 가자 (0) | 2023.06.01 |