12919 - A와 B 2
info
- 문제 보기: 12919 - A와 B 2
- 소요 시간: 29분 33초
- 풀이 언어: python
- 체감 난이도: 3️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
DP
풀이 코드
info
- 메모리: 31252 KB
- 시간: 36 ms
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
s = ''
def dp(t):
    global memo
    #print(t)
    if t == s:
        print(1)
        exit(0)
    
    if len(t) <= len(s):
        return
    
    # 이전 문자열 구하기
    if t[0] == 'B':
        prev = (t[1:])[::-1]
        dp(prev)
    if t[-1] == 'A':
        prev = t[:-1]
        dp(prev)
    
    return
def solution():
    global s
    s = input().rstrip()
    t = input().rstrip()
    dp(t)
    print(0)
if __name__ == '__main__':
    solution()
풀이 해설
T에서 S로 도달하기 위해 조작할 수 있는 2가지 처리 방식을 재귀로 구현한다.
단, 가능 case가 발견되는 즉시 return하지 않고 exit하는 것이 효율적이다.
메모
- S에서 T로 도달하는 것이 아닌 역방향으로 진행해야 하는 발상 때문에 3️⃣을 줌. dp 구현 난이도는 1️⃣급임