본문 바로가기
백준 알고리즘

파이썬) 백준 알고리즘 | 12904번 : A와 B

by 코딩새내기_ 2022. 7. 25.

https://www.acmicpc.net/problem/12904

 

12904번: A와 B

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수

www.acmicpc.net

 

풀이

처음에는 s에서 t로 바꾸는 방법을 생각해봤었는데 그렇게 접근할 경우 경우의 수가 2^n으로 너무 많아졌다.

그래서 t에서 s로 접근하는 방법을 생각하였다.

while문 안에서

1. 만약 t의 마지막 글자가 A라면 t = t[:-1]로 두어서 A를 지운다.

2. 만약 t의 마지막 글자가 B라면 t = t[:-1][::-1]로 두어서 B를 지우고 반대로 바꾼다.

이걸 반복하여 s와 t가 동일해진다면 1를 출력하고 아닌 경우 0을 출력하면 된다.

 

제가 제출한 코드인데 막 짜서 그런지 허접합니다..ㅜㅜ

s = input()
t = input()
check = False
tmp = t
while True:
    try:
        if t == s:
            check = True
            break
        elif t[-1] == 'A':
            t = t[:-1]
        elif t[-1] == 'B':
            t = t[:-1][::-1]
        elif tmp == t:
            break
        tmp = t
    except:
        break
if check is True:
    print(1)
else:
    print(0)

그래서 풀이 후에 다른 사람 코드를 둘러봤는데 이 코드가 깔끔하여 추가로 첨부합니다.

s = list(map(str, input()))
t = list(map(str, input()))

while len(s) != len(t):
    if t[-1] == 'A':
        t.pop()
    elif t[-1] == 'B':
        t.pop()
        t = t[::-1]
if s == t:
    print(1)
else:
    print(0)

댓글