๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปAlgorithm/PS

[BOJ/๋ฐฑ์ค€] 14891 ํ†ฑ๋‹ˆ๋ฐ”ํ€ด - ํŒŒ์ด์ฌ

๋ฌธ์ œ

https://www.acmicpc.net/problem/14891

 

14891๋ฒˆ: ํ†ฑ๋‹ˆ๋ฐ”ํ€ด

์ด 8๊ฐœ์˜ ํ†ฑ๋‹ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ†ฑ๋‹ˆ๋ฐ”ํ€ด 4๊ฐœ๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ผ๋ ฌ๋กœ ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ๋˜, ํ†ฑ๋‹ˆ๋Š” N๊ทน ๋˜๋Š” S๊ทน ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค. ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ์™ผ์ชฝ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด

www.acmicpc.net

 

๋ฌธ์ œํ’€์ด

n๋ฒˆ ๋ฐ”ํ€ด์˜ 2๋ฒˆ index๋Š” n+1๋ฒˆ ๋ฐ”ํ€ด์˜ 6๋ฒˆ index์™€ ์ธ์ ‘ํ•˜๊ณ 

n๋ฒˆ ๋ฐ”ํ€ด์˜ 6๋ฒˆ index๋Š” n-1๋ฒˆ ๋ฐ”ํ€ด์˜ 2๋ฒˆ index์™€ ์ธ์ ‘ํ•œ๋‹ค.

 

์ด ๋‘ ๊ฐ’์„ ๋จผ์ € update ํ•œ ํ›„์—,

a๋ฒˆ์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ์œผ๋กœ 2๊ฐœ์˜ for๋ฌธ์„ ํ†ตํ•ด ๋‚˜๋จธ์ง€ ๋ฐ”ํ€ด๋“ค์„ ํƒ์ƒ‰ํ•œ๋‹ค.

a๋ฒˆ๊ณผ ๋ฐ”๋กœ ์ธ์ ‘ํ•œ ๋ฐ”ํ€ด์˜ ๊ฒฝ์šฐ, a๋ฒˆ๊ณผ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

b์— -1์„ ๊ณฑํ•ด์ค€ ๊ฐ’์„, ๊ทธ ๋‹ค์Œ ๋ฐ”ํ€ด๋Š” ๋˜ ๋‹ค์‹œ -1์„ ๊ณฑํ•œ b ๊ฐ’์„ ์—ฐ์‚ฐํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

deque์— ํฌํ•จ๋œ rotate ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด index ๋ณ€ํ™˜์„ ๋” ์‰ฝ๊ฒŒ ํ•ด์ฃผ์—ˆ๋‹ค.

 

  • rotate ์—ฐ์‚ฐ

   rotate() : ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ pop ํ•œ ๋’ค์— appendleft๋กœ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
               ๊ด„ํ˜ธ ์•ˆ์— ์ธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ๊ทธ ๊ฐ’๋งŒํผ ์ด๋™
               -๊ฐ’์ด ๋“ค์–ด๊ฐ€๋ฉด ๊ฐ€์žฅ ์™ผ์ชฝ ๊ฐ’์„ popleft ํ•œ ํ›„์— append ํ•ด์ค€๋‹ค.

 

 

์ฝ”๋“œ

from collections import deque
โ€‹
saw=[deque(map(int,input())) for _ in range(4)]
k=int(input())
how=[]
โ€‹
for i in range(k):
    how.append(list(map(int,input().split())))
    how[i][0]-=1
โ€‹
for a,b in how:
    tmp1=saw[a][2]
    tmp2=saw[a][6]
    k=b
    for i in range(a-1,0-1,-1):
        if saw[i][2]!=tmp2:
            tmp2=saw[i][6]
            saw[i].rotate(-1*k)
            k*=-1
        else:
            break
    k=b
    for i in range(a+1,4):
        if saw[i][6]!=tmp1:
            tmp1=saw[i][2]
            saw[i].rotate(-1*k)
            k*=-1
        else:
            break
    
    saw[a].rotate(b)
result=0
for i in range(4):
    if saw[i][0]==1:
        result+=(2**i)
print(result)

 

์–ด๋ ค์› ๋˜ ์  / ๋Š๋‚€์ 

์ฒ˜์Œ์—๋Š” rotate ๋Œ€์‹  ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ์‹คํ–‰ํ–ˆ๋‹ค. ์˜ˆ์‹œ๋Š” ๋‹ค ํ†ต๊ณผํ•˜๊ธธ๋ž˜ ์ œ์ถœํ–ˆ๋Š”๋ฐ ์ œ์ถœํ•˜์ž๋งˆ์ž ํ‹€๋ ธ๋‹ค.

๊ตฌ๊ธ€๋งํ•˜๋‹ค๊ฐ€ rotate ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌ!!