-
[BOJ 12904, Python 3] A와 B알고리즘/BOJ 2021. 8. 10. 11:27반응형
https://www.acmicpc.net/problem/12904
12904번: A와 B
수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수
www.acmicpc.net
풀이
관점을 바꿔서 T를 S로 만들면 됩니다.
왜냐하면 S에서 T로 만드는 경우에는 오른쪽에는 A를, 왼쪽에는 B를 추가해야하고, 어떤 기준으로 A와 B를 추가해야하는지 알 길이 없습니다. 그렇다고 모든 경우의 수를 하기에는 S = 1, T = 1000이면 실제로는 이것보다 적겠지만 대충 2^999가지의 경우의 수를 확인해야해서 시간내에 풀 수 없습니다.
하지만 T에서 S로 만드는 경우에는
- 문자열 뒤에 A를 삭제한다
-문자열 뒤에 B를 삭제하고 문자열을 뒤집는다.
라서 무조건 오른쪽 문자를 없애는 것이므로 뒤의 문자열이 A인지 B인지 확인하면서 풀 수 있습니다.
코드
123456789s = [*input()]t = [*input()]while len(s) != len(t):if t[-1] == 'A': t.pop()else: t.pop(); t = t[::-1]flag = Truefor i in range(len(s)):if t[i] != s[i]: flag = Falseprint([0, 1][flag])cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 15922, Python 3] 아우으 우아으이야!! (0) 2021.08.10 [BOJ 16678, Python 3] 모독 (0) 2021.08.10 [BOJ 22869, C++] 징검다리 건너기 (small) (0) 2021.08.09 [BOJ 22871, C++] 징검다리 건너기(large) (0) 2021.08.09 [BOJ 11000, Python 3] 강의실 배정 (0) 2021.08.09