[BOJ][๐ก5][๋ฐฑ์ค#12904] A์ B
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์๋น์ด๋ A์ B๋ก๋ง ์ด๋ฃจ์ด์ง ์์ด ๋จ์ด๊ฐ ์กด์ฌํ๋ค๋ ์ฌ์ค์ ๋๋๋ค. ๋ํ์ ์ธ ์๋ก AB (Abdominal์ ์ฝ์), BAA (์์ ์ธ์ ์๋ฆฌ), AA (์ฉ์์ ์ข ๋ฅ), ABBA (์ค์จ๋ด ํ ๊ทธ๋ฃน)์ด ์๋ค. ์ด๋ฐ ์ฌ์ค์ ๋๋ ์๋น์ด๋ ๊ฐ๋จํ ๊ฒ์์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ๋ ๋ฌธ์์ด S์ T๊ฐ ์ฃผ์ด์ก์ ๋, S๋ฅผ T๋ก ๋ฐ๊พธ๋ ๊ฒ์์ด๋ค. ๋ฌธ์์ด์ ๋ฐ๊ฟ ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ์ฐ์ฐ๋ง ๊ฐ๋ฅํ๋ค.
๋ฌธ์์ด์ ๋ค์ A๋ฅผ ์ถ๊ฐํ๋ค. ๋ฌธ์์ด์ ๋ค์ง๊ณ ๋ค์ B๋ฅผ ์ถ๊ฐํ๋ค.
์ฃผ์ด์ง ์กฐ๊ฑด์ ์ด์ฉํด์ S๋ฅผ T๋ก ๋ง๋ค ์ ์๋์ง ์๋์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.ย
์ ๋ ฅ
์ฒซ์งธ ์ค์ S๊ฐ ๋์งธ ์ค์ T๊ฐ ์ฃผ์ด์ง๋ค. (1 โค S์ ๊ธธ์ด โค 999, 2 โค T์ ๊ธธ์ด โค 1000, S์ ๊ธธ์ด < T์ ๊ธธ์ด)
์ถ๋ ฅ
S๋ฅผ T๋ก ๋ฐ๊ฟ ์ ์์ผ๋ฉด 1์ ์์ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค.
์์
์์ 1
์ ๋ ฅ
B
ABBA
์ถ๋ ฅ
1
์์ 2
์ ๋ ฅ
AB
ABB
์ถ๋ ฅ
0
My Sol
from collections import deque
def main() :
S = list(input())
Q = deque(list(input()))
D = {0:-1, -1:0}
sl, ql = len(S), len(Q)
i, op = 0, -1
while i < ql-sl:
i += 1
p = Q.pop() if op else Q.popleft()
if p == 'A': continue
op = D[op]
while Q:
a = Q.pop() if op else Q.popleft()
b = S.pop()
if a!=b: return 0
return 1
print(main())
์ปจ์ ์ ํ์ฌ ๋จ์ด T์์ ๋งจ ๋ค์ ์ํ๋ฒณ์ ๋ฐ๋ผ ์ด์ ๋ฌธ์๊ฐ ๊ฒฐ์ ์ด ๋๋ค๋ ๊ฒ์ด๋ค.
- T์ ๊ธธ์ด์์ S์ ๊ธธ์ด๋ฅผ ๋บ๋งํผ ๋ถ์ฌ์ค ์ํ๋ฒณ์ ๋ผ์ด์ฃผ์ด์ผ ํ๋ค.
- ์ ๋ ฅ์ ๋ฐ๊ณ , ๊ฐ ๊ธธ์ด๋ฅผ ๊ณ์ฐํด ๊ทธ ๊ธธ์ด ์ฐจ์ด๋งํผ ๋ฐ๋ณต์ ์ค์ํ๋ค.
- ๋ค๋ฅผ ๋ผ์ด๋ด๊ณ A/B ์ฌ๋ถ์ ๋ฐ๋ผ ์์ ๋ฌธ์์ด์ ๋ค์ง์ด์ฃผ๋ฉฐ ๋ฐ๋ณตํด๋ ๋์ง๋ง ๋ถํ์ํ ์ฐ์ฐ์ ํผํ๊ธฐ ์ํด ๋ผ์ด์ฃผ๋ ์์น๋ฅผ ์๊ณผ ๋ค๋ก ๊ตฌ๋ถํ๊ธฐ๋ก ํ๋ค. ์ฆ, B๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ๋ค์์ ๋ผ๊ณ ์๋ค๋ฉด ์์์ ๋ผ๋๋ก, ์์์ ๋ผ๊ณ ์๋ค๋ฉด ๋ค์์ ๋ผ๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ทธ flag๋ฅผ
op
๋ก ๋์๋ค. - ์ด๋ฅผ ์ํด deque๋ฅผ ์ฌ์ฉํ๋ค. ์์์ ๋ผ์ด๋ด๋, ๋ค์์ ๋ผ์ด๋ด๋ ๋ชจ๋ ์ ๋ฆฌํ ๊ฒ์ด๋ค.
- ๋ชจ๋ ๋ฐ๋ณต์ ์ข
๋ฃํ๋ฉด ํ์ฌ reverse ์ฌ๋ถ๋ฅผ ์ง๋
op
๋ณ์์, ์์ชฝ์ ๋ผ์ด๋ธT
(deque์ ๋ฃ์T
๋ฅผQ
๋ก ๋์๋ค.)์S
๊ฐ ๋จ์๋ค. - ์ด
T
์S
์ ์ํ๊ฐ ๊ฐ์ผ๋ฉด 1, ์๋๋ฉด 0์ด๊ณop
๋ณ์์ ๊ฐ์ ๋ฐ๋ผ ๋น๊ต์ ๋ฐฉํฅ์ด ๊ฒฐ์ ๋๋ค. ์ต์ด -1๋ก ๋op
๋ณ์๊ฐ ํ์ฌ๋ -1์ด๋ฉด ์ ๋ฐฉํฅ, 0์ด๋ฉด ์ญ๋ฐฉํฅ์ผ๋ก ๋์ผ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. - ์ด ๊ณผ์ ์ ํ๋๋ผ๋ ๋์ผํ์ง ์๋ค๋ฉด 0์ ๋ฐํํ๊ณ , ๋ชจ๋ ๋์ผํด Q๊ฐ ๋น๊ฒ ๋๋ค๋ฉด 1์ ๋ฐํํ๋ค.
- ์ด ๋ฐํ๊ฐ์ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋ชจ๋ฒ๋ต์
s = input()
t = input()
while len(t)!=len(s):
if t[-1] == "A":
t = t[:-1]
else:
t = t[:-1][::-1]
if s == t:
print(1)
else:
print(0)
์ฐ์ฐ์๊ฐ์ด 2๋ฐฐ๋ ๋น ๋ฅธ ํ์ด๋ฅผ ๋ถ์ํ๋ ค ํ๋คโฆ.๋ง ์ ๋ง ์ด์ด๊ฐ ์๋ค. ๋ด๊ฐ ์ง์ํ๋ ค๋ ํ์ด์ด๋ค. ๋งค๋ฒ ๊ณ์ฐํ๋ฉฐ ๋ค๋ฅผ ๋ผ์ด๋ด๊ณ ๋จ์์๋ T๋ฅผ S์ ๋น๊ตํ๋ ๊ฒ์ด๋ค.
์๋ง๋ ๋ฌธ์ ์ ์ ๋ ฅ์ด ์ต๋ 1,000์ผ๋ก ์์์ ๊ฐ๋ฅํ๋ ํ์ด์ด๊ณ , ๋ฌธ์ ์ ์ ๋ ฅ์ด ๋ชน์ ์ปธ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌํ ๋นํ๋ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ reverseํ๋ ๋ฌธ์ ๋ฑ ์๊ฐ, ๊ณต๊ฐ ๋ณต์ก๋ ๊ด์ ์์ ๋ถ๋ฆฌํ ํ์ด๊ฐ ๋ ๊ฒ์ด๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ