본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[python] 12904- A와 B

12904번: A와 B (acmicpc.net)

 

12904번: A와 B

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

www.acmicpc.net

 

문자열 구현 문제이다.

A와B로만 이루어진 문자열 2개가 주어지고 문자열 s를 문자열 t로 바꿀 수 있는지 판별하는 문제로

가능한 연산은 두 가지가 있다.

 

1. 문자열의 뒤에 A를 추가

2. 문자열을 뒤집고 뒤에 B를 추가

 

그런데, s에서 연산을 해서 t로 만드는 방법은 너무 많지않은가?

그래서 반대로 생각해보기로 했다.

이미 완성된 문자열에서 적용했던 연산을 거꾸로 한다면?

t에서 s를 만드는 것이 가능한지만 판별하면 s를 t로 만들 수 있는지 알 수 있다.

 

그래서 연산을 뒤집어 보았다.

 

1. 문자열의 뒤에 A를 삭제

2. 문자열 뒤의 B를 삭제하고 문자열 뒤집기

 

이렇게 했더니 정말 간단하게 문제를 풀 수 있었다.

 

#12904 A와 B
import sys
input = sys.stdin.readline

s = input().strip()
t = input().strip()

flag=False
while len(s) <= len(t):
    if s == t:
        flag= True

    # 끝 문자열
    x = t[-1]    
    t = t[:-1]

    if x == 'A':
        continue
    elif x == 'B':
        t = t[::-1]
        
#검사
if flag:
    print(1)
else:
    print(0)

 

 

 

* 모든 코드는 github에서 관리합니다.  seinShin (SEIN SHIN) (github.com)

 

seinShin - Overview

blog : https://bboddorong.tistory.com/. seinShin has 7 repositories available. Follow their code on GitHub.

github.com

 

728x90