본문 바로가기

Coding Test/BOJ

[백준/Python] 12904 A와 B

문제 링크

 

12904번: A와 B

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

www.acmicpc.net

 

문제 풀이

  • 처음에는 큐를 생성하고 s를 넣은 상태에서 A, B를 더해서 다시 큐에 넣어서 t와 비교하는 방식으로 접근하였다. 하지만, 메모리 초과가 발생해서 게시판의 질문들을 통해서 힌트를 조금 얻었다.
  • 먼저, s를 t로 만들게 되면, 그 경우의 수가 많아지게 된다는 것이다. 이때, t의 길이가 될 때까지 진행해야 하므로 당연히 s와 t의 길이 차가 많이 날수록 그만큼 큐에 들어있는 문자열 또한 많아지게 된다.
  • 반대로 생각하면, t를 s로 만드는 것이다. A, B를 더해서 새로운 문자열이 만들어지므로, t의 마지막 문자에 따라 기존의 문자열이 무엇이었는지 확인할 수 있다.
  • 이를 길이가 s와 동일할때까지 반복해서 진행하면 원래의 문자열이 나오고, s와 비교하였을 때, 동일한 값이면 1을 출력하고, 아니면 0을 출력하는 간단한 문제가 된다.

 

전체 코드

import sys

s = sys.stdin.readline().strip()
t = sys.stdin.readline().strip()

while len(t) > len(s):
    if t[-1] == "A":
        t = t[:-1]
    else:
        t = t[:-1][::-1]

if t == s:
    print(1)
else:
    print(0)
반응형

'Coding Test > BOJ' 카테고리의 다른 글

[백준/Python] 2170 선 긋기  (0) 2024.02.17
[백준/Python] 10026 적록색약  (0) 2024.02.15
[백준/Python] 2565 전깃줄  (2) 2024.02.13
[백준/Python] 13335 트럭  (2) 2024.02.12
[백준/Python] 2512 예산  (0) 2024.02.10