파이썬 백준 12904번
골드 5
https://www.acmicpc.net/problem/12904
문제 보기
분류: 구현, 문자열, 그리디 알고리즘
문제 풀기
역으로 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)
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 1789 - 수들의 합 (0) | 2022.12.09 |
---|---|
[Python] 백준 풀기 2212 - 센서 (0) | 2022.12.08 |
[Python] 백준 풀기 16953 - A → B (0) | 2022.12.06 |
[Python] 백준 풀기 1026 - 보물 (0) | 2022.12.05 |
[Python] 백준 풀기 2167 - 2차원 배열의 합 (0) | 2022.12.04 |