728x90
https://www.acmicpc.net/problem/12919
A와 B 1번 문제에 이어서 2번 문제이다.
A와 B 1번 문제는 while문을 이용해 T에서부터 S를 만들어 나갈 수 있었지만, 2번 문제 같은 경우 while 문을 이용하기엔 다양한 경우의 수가 존재해서 재귀 + 브루트 포스를 이용해 풀었다.
import sys
#sys.setrecursionlimit(10**6)
input = sys.stdin.readline
def dfs(s,t):
if s==t:
return 1
if len(t)<=len(s):
return 0
ans = 0
if t[-1] == 'A': # 마지막이 A면 그냥 제거
ans = dfs(s,t[:-1])
if ans == 1:
return 1
if t[0]=='B': # 처음이 B면 reverse 후 제거
ans = dfs(s,t[::-1][:-1])
return ans
if __name__ == "__main__":
S = list(input().rstrip())
T = list(input().rstrip())
print(dfs(S,T))
728x90
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/파이썬] 13549번 숨바꼭질 3 (0) | 2023.07.08 |
---|---|
[백준/파이썬] 1041번 주사위 (0) | 2023.05.31 |
[백준/파이썬] 1111번 IQ Test (0) | 2023.05.26 |
[백준/파이썬] 17144번 미세먼지 안녕! (0) | 2023.05.04 |
[백준/파이썬] 2877번 4와 7 (0) | 2023.04.26 |