[BOJ][๐ŸŸก5][๋ฐฑ์ค€#12904] A์™€ B

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #12904


๋ฌธ์ œ

์ˆ˜๋นˆ์ด๋Š” 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์—์„œ ๋งจ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ์— ๋”ฐ๋ผ ์ด์ „ ๋ฌธ์ž๊ฐ€ ๊ฒฐ์ •์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  1. T์˜ ๊ธธ์ด์—์„œ S์˜ ๊ธธ์ด๋ฅผ ๋บ€๋งŒํผ ๋ถ™์—ฌ์ค€ ์•ŒํŒŒ๋ฒณ์„ ๋–ผ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  2. ์ž…๋ ฅ์„ ๋ฐ›๊ณ , ๊ฐ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•ด ๊ทธ ๊ธธ์ด ์ฐจ์ด๋งŒํผ ๋ฐ˜๋ณต์„ ์‹ค์‹œํ•œ๋‹ค.
  3. ๋’ค๋ฅผ ๋–ผ์–ด๋‚ด๊ณ  A/B ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์•ž์˜ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์–ด์ฃผ๋ฉฐ ๋ฐ˜๋ณตํ•ด๋„ ๋˜์ง€๋งŒ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋–ผ์–ด์ฃผ๋Š” ์œ„์น˜๋ฅผ ์•ž๊ณผ ๋’ค๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ฆ‰, B๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋’ค์—์„œ ๋–ผ๊ณ  ์žˆ๋‹ค๋ฉด ์•ž์—์„œ ๋–ผ๋„๋ก, ์•ž์—์„œ ๋–ผ๊ณ  ์žˆ๋‹ค๋ฉด ๋’ค์—์„œ ๋–ผ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ flag๋ฅผ op๋กœ ๋‘์—ˆ๋‹ค.
  4. ์ด๋ฅผ ์œ„ํ•ด deque๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์•ž์—์„œ ๋–ผ์–ด๋‚ด๋„, ๋’ค์—์„œ ๋–ผ์–ด๋‚ด๋„ ๋ชจ๋‘ ์œ ๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.
  5. ๋ชจ๋“  ๋ฐ˜๋ณต์„ ์ข…๋ฃŒํ•˜๋ฉด ํ˜„์žฌ reverse ์—ฌ๋ถ€๋ฅผ ์ง€๋‹Œ op ๋ณ€์ˆ˜์™€, ์–‘์ชฝ์„ ๋–ผ์–ด๋‚ธ T(deque์— ๋„ฃ์€ T๋ฅผ Q๋กœ ๋‘์—ˆ๋‹ค.)์™€ S๊ฐ€ ๋‚จ์•˜๋‹ค.
  6. ์ด T์™€ S์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์ด๊ณ  op ๋ณ€์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋น„๊ต์˜ ๋ฐฉํ–ฅ์ด ๊ฒฐ์ •๋œ๋‹ค. ์ตœ์ดˆ -1๋กœ ๋‘” op ๋ณ€์ˆ˜๊ฐ€ ํ˜„์žฌ๋„ -1์ด๋ฉด ์ •๋ฐฉํ–ฅ, 0์ด๋ฉด ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๋™์ผ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.
  7. ์ด ๊ณผ์ •์— ํ•˜๋‚˜๋ผ๋„ ๋™์ผํ•˜์ง€ ์•Š๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ชจ๋‘ ๋™์ผํ•ด Q๊ฐ€ ๋น„๊ฒŒ ๋œ๋‹ค๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  8. ์ด ๋ฐ˜ํ™˜๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!


๋ชจ๋ฒ”๋‹ต์•ˆ

์ถœ์ฒ˜

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ํ•˜๋Š” ๋ฌธ์ œ ๋“ฑ ์‹œ๊ฐ„, ๊ณต๊ฐ„ ๋ณต์žก๋„ ๊ด€์ ์—์„œ ๋ถˆ๋ฆฌํ•œ ํ’€์ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ