Coding Test
[Greedy] 12904번: A와 B
kldaji
2021. 7. 7. 11:51
https://www.acmicpc.net/problem/12904
12904번: A와 B
수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수
www.acmicpc.net
1. 입력 예시
B
ABBA
2. 풀이
a. B를 ABBA로 만들어야 하지만 거꾸로 ABBA를 B로 만들 수 있는지 없는지 확인하면 쉽게 풀리는 문제다.
b. Target 문자열 맨 뒤에 A가 오면 단순히 A를 제거한다.
c. Target 문자열 맨 뒤에 B가 오면 B를 제거한 후 문자열을 뒤집는다.
d. 두 문자열의 길이가 같아질 때까지 반복한다.
3. 코드
from sys import *
# inputs
S = stdin.readline().rstrip()
# 문자열을 뒤집기위해 list로 입력을 받았다.
T = list(stdin.readline().rstrip())
# len(T)-1 ~ len(S) 순회
for i in range(len(T) - 1, len(S) - 1, -1):
if T[i] == "A":
# A가 오면 단순히 pop
T.pop()
elif T[i] == "B":
# B가 오면 pop -> 뒤집기
T.pop()
T = T[::-1]
# 두 문자열이 같은지 확인
if "".join(T) == S:
print(1)
else:
print(0)
※ 문제 풀이가 복잡하거나 잘 안풀리면 거꾸로 생각하는 습관을 가지자.