728x90
반응형
1. 문제
수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.
이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.
- 문자열의 뒤에 A를 추가한다.
- 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다.
주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오.
2. 입력
첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 49, 2 ≤ T의 길이 ≤ 50, S의 길이 < T의 길이)
3. 출력
S를 T로 바꿀 수 있으면 1을 없으면 0을 출력한다.
4. 예제
예제 입력 1
A
BABA
예제 출력 1
1
예제 입력 2
BAAAAABAA
BAABAAAAAB
예제 출력 2
1
예제 입력 3
A
ABBA
예제 출력 3
0
5. 풀이과정
- 그냥 하면 되는데, 거꾸로 진행하면서 복잡도를 줄이는 것이 포인트
내 풀이
import sys
from collections import deque
input = sys.stdin.readline
S = list(input().rstrip())
T = list(input().rstrip())
answer = 0
q = deque()
q.append((T, len(T)))
n = len(S)
while q:
now, level = q.popleft()
if now == S:
answer = 1
break
if level < n:
continue
if now[-1] == 'A':
q.append((now[:-1], level-1))
if now[0] == 'B':
q.append((now[1:][::-1], level-1))
print(answer)
728x90
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 색종이 만들기 (2630번) - 파이썬(Python) (0) | 2024.11.13 |
---|---|
[백준] 별 찍기 - 2 (2439번) - 파이썬(Python) (0) | 2024.08.06 |
[백준] 강의실 배정(11000번) - 파이썬(Python) (0) | 2023.08.30 |
[백준] 계란으로 계란치기(16987번) - 파이썬(Python) (1) | 2023.08.29 |
[백준] MooTube (Silver)(15591번) - 파이썬(Python) (0) | 2023.08.27 |