"""
31120KB 40ms
"""
# s를 t로 바꾸는게 가능한지.
# 문자열의 뒤에 a 추가하기
# 문자열의 뒤에 b를 추가하고 뒤집기
# t에서 s만큼 될때까지 연산해서 s가 나오는지?
s = list(input())
t = list(input())
def text_check(t):
if t == s: # t와 s가 같다면 1 출력하고 종료
print(1)
exit(0)
if len(t) == 0: # t가 모두 삭제될 경우
return 0
if t[-1] == 'A': # A는 문자열의 뒤에 추가. -1에서 찾음
text_check(t[:-1])
if t[0] == 'B': # B는 문자열 뒤에 추가 + 뒤집기 = 앞에 와있음. 0에서 찾고 제거 후 뒤집기
text_check(t[1:][::-1])
text_check(t)
print(0)
좀 헷갈렸던 문제... 처음엔 while문 하나로만 풀었는데 계속 틀려서 결국 재귀로 풀게 되었다.
이 문제에서 중요한건 s를 t로 만든다는게 아니라 t를 s로 만드는 것이라고 생각한다.
재귀함수 text_check를 만들어주고, 종료 조건을 작성한다. t와 s가 같다면 1을 출력하고 프로그램을 종료하게 했다. 그리고 t의 문자가 모두 삭제되었을때는 0을 출력하도록 해주었다.
t를 s로 만드는 것이기때문에 삭제도 반대로 해주어야한다. 문제에서 A는 문자열의 뒤에 추가되니 맨 마지막에서 A를 찾는다면 삭제를 하고 재귀함수를 호출해준다. 그리고 B의 경우는 첫번째에서 찾아야하는데, s에서 B를 추가했을경우 문자열 뒤에 B가 추가되고 한번 뒤집어지기 때문이다. 즉 0에 있는 B는 한번 뒤집어져서 맨 앞으로 오게 되었다는것이다. 그래서 제거 후 문자열을 뒤집어준다.
반대로 생각하는것이 조금 어려웠던 문제였다.
https://www.acmicpc.net/problem/12919
12919번: A와 B 2
수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈
www.acmicpc.net
'study > Algorithm' 카테고리의 다른 글
[프로그래머스] 조건에 맞게 수열 변환하기 2 (0) | 2024.05.02 |
---|---|
[백준] 파이썬 10282번 : 해킹 (0) | 2024.04.16 |
[백준] 파이썬 5972번 : 택배 배송 (0) | 2024.04.15 |
[백준] 파이썬 1713 : 후보 추천하기 (0) | 2024.04.15 |
[백준] 파이썬 13305번 : 주유소 (0) | 2024.04.15 |