공부하기/백준

[Python] 백준 풀기 12904 - A와 B

XEV 2022. 12. 7. 21:26

파이썬 백준 12904번

골드 5

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

 

12904번: A와 B

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열, 그리디 알고리즘

 

 

 

 

 

문제 풀기

역으로 T 에서 S 로 변경이 가능한지를 확인한다.

이 문제로 주어진 문자열을 다루는 것에 대해 일부 학습이 되었다.

맨 뒷 문자 확인, 맨 뒷 문자 제거, 문자 전체 뒤집기.

 

 

while loop 를 실행하면서 같은 T 와 S 가 같아질 때까지 반복을 하여 조건을 만족하면 1 을 출력, 이 조건을 지나치고 T 의 문자 길이가 S 보다 작아지면 변환이 불가능하여 0 을 출력한다.

 

맨 뒷 문자가 A 이면 제거, B 이면 제거 후 문자 전체를 뒤집는다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnIsPossible(S, T):             # 역으로 T 에서 S 로 가능한지를 찾는다.
    while True:
        if T == S:                  # 매번 T 와 S 를 비교.
            print(1)
            break
        elif len(T) < len(S):       # 위의 조건을 만족하지 못한 상태에서 T 의 길이가 더 작아지면 불가능.
            print(0)
            break
        elif T[-1] == 'A':          # 맨 뒷 문자가 A 이면 A 제거.
            T = T[:-1]
        elif T[-1] == 'B':          # 맨 뒷 문자가 B 이면 B 제거 후 뒤집음.
            T = T[:-1]
            T = T[::-1]


if __name__ == "__main__":
    S = str(inputdata().strip())
    T = str(inputdata().strip())
    
    fnIsPossible(S, T)