😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[BAEKJOON python] 14891_ν†±λ‹ˆλ°”ν€΄ λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/BAEKJOON

[BAEKJOON python] 14891_ν†±λ‹ˆλ°”ν€΄

μ§•μ§•μ•ŒνŒŒμΉ΄ 2022. 10. 13. 15:55
728x90
λ°˜μ‘ν˜•
총 8개의 ν†±λ‹ˆλ₯Ό 가지고 μžˆλŠ” ν†±λ‹ˆλ°”ν€΄ 4개
    ν†±λ‹ˆλŠ” Nκ·Ή λ˜λŠ” Sκ·Ή 쀑 ν•˜λ‚˜λ₯Ό λ‚˜νƒ€λ‚΄κ³  μžˆλ‹€.
    κ°€μž₯ μ™Όμͺ½ ν†±λ‹ˆλ°”ν€΄κ°€ 1번, κ·Έ 였λ₯Έμͺ½μ€ 2번,
    κ·Έ 였λ₯Έμͺ½μ€ 3번, κ°€μž₯ 였λ₯Έμͺ½ ν†±λ‹ˆλ°”ν€΄λŠ” 4번
ν†±λ‹ˆλ°”ν€΄λ₯Ό 총 K번 νšŒμ „μ‹œν‚€λ €κ³  ν•œλ‹€.

ν†±λ‹ˆλ°”ν€΄μ˜ νšŒμ „μ€ ν•œ 칸을 κΈ°μ€€μœΌλ‘œ ν•œλ‹€.
νšŒμ „μ€ μ‹œκ³„ λ°©ν–₯κ³Ό λ°˜μ‹œκ³„ λ°©ν–₯
ν†±λ‹ˆλ°”ν€΄λ₯Ό νšŒμ „μ‹œν‚€λ €λ©΄, νšŒμ „μ‹œν‚¬ ν†±λ‹ˆλ°”ν€΄μ™€ νšŒμ „μ‹œν‚¬ λ°©ν–₯을 κ²°μ •
νšŒμ „ν•  λ•Œ, μ„œλ‘œ λ§žλ‹Ώμ€ 극에 λ”°λΌμ„œ μ˜†μ— μžˆλŠ” ν†±λ‹ˆλ°”ν€΄λ₯Ό νšŒμ „μ‹œν‚¬ μˆ˜λ„ 있고, νšŒμ „μ‹œν‚€μ§€ μ•Šμ„ μˆ˜λ„ 있음
ν†±λ‹ˆλ°”ν€΄ Aλ₯Ό νšŒμ „ν•  λ•Œ, κ·Έ μ˜†μ— μžˆλŠ” ν†±λ‹ˆλ°”ν€΄ B와 μ„œλ‘œ λ§žλ‹Ώμ€ ν†±λ‹ˆμ˜ 극이 λ‹€λ₯΄λ‹€λ©΄,
 BλŠ” Aκ°€ νšŒμ „ν•œ λ°©ν–₯κ³Ό λ°˜λŒ€λ°©ν–₯으둜 νšŒμ „ν•˜κ²Œ λœλ‹€.

ν†±λ‹ˆλ°”ν€΄μ˜ 초기 μƒνƒœμ™€ ν†±λ‹ˆλ°”ν€΄λ₯Ό νšŒμ „μ‹œν‚¨ 방법이 μ£Όμ–΄μ‘Œμ„ λ•Œ,
μ΅œμ’… ν†±λ‹ˆλ°”ν€΄μ˜ μƒνƒœλ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±

첫째 쀄에 1번 ν†±λ‹ˆλ°”ν€΄μ˜ μƒνƒœ, λ‘˜μ§Έ 쀄에 2번 ν†±λ‹ˆλ°”ν€΄μ˜ μƒνƒœ, μ…‹μ§Έ 쀄에 3번 ν†±λ‹ˆλ°”ν€΄μ˜ μƒνƒœ, λ„·μ§Έ 쀄에 4번 ν†±λ‹ˆλ°”ν€΄μ˜ μƒνƒœ
    μƒνƒœλŠ” 8개의 μ •μˆ˜λ‘œ 이루어져 있고, 12μ‹œλ°©ν–₯λΆ€ν„° μ‹œκ³„λ°©ν–₯ μˆœμ„œλŒ€λ‘œ 주어진닀.
    N극은 0, S극은 1
λ‹€μ„―μ§Έ μ€„μ—λŠ” νšŒμ „ 횟수 K(1 ≤ K ≤ 100)κ°€ 주어진닀.
λ‹€μŒ K개 μ€„μ—λŠ” νšŒμ „μ‹œν‚¨ 방법이 μˆœμ„œλŒ€λ‘œ 주어진닀.
    두 개의 μ •μˆ˜ : 첫 번째 μ •μˆ˜λŠ” νšŒμ „μ‹œν‚¨ ν†±λ‹ˆλ°”ν€΄μ˜ 번호, 두 번째 μ •μˆ˜λŠ” λ°©ν–₯
    λ°©ν–₯이 1인 κ²½μš°λŠ” μ‹œκ³„ λ°©ν–₯이고, -1인 κ²½μš°λŠ” λ°˜μ‹œκ³„ λ°©ν–₯

총 K번 νšŒμ „μ‹œν‚¨ 이후에 λ„€ ν†±λ‹ˆλ°”ν€΄μ˜ 점수의 합을 좜λ ₯
    1번 ν†±λ‹ˆλ°”ν€΄μ˜ 12μ‹œλ°©ν–₯이 N극이면 0점, S극이면 1점
    2번 ν†±λ‹ˆλ°”ν€΄μ˜ 12μ‹œλ°©ν–₯이 N극이면 0점, S극이면 2점
    3번 ν†±λ‹ˆλ°”ν€΄μ˜ 12μ‹œλ°©ν–₯이 N극이면 0점, S극이면 4점
    4번 ν†±λ‹ˆλ°”ν€΄μ˜ 12μ‹œλ°©ν–₯이 N극이면 0점, S극이면 8점
# 1) DFS

import  collections

graph = []
# for i in range(4) :
#     graph.append(list(map(int, input())))
for _ in range(4):
    graph.append(collections.deque(list(input())))

# K개 μ€„μ—λŠ” νšŒμ „μ‹œν‚¨ 방법
K = int(input())

# ν†±λ‹ˆ λ§žλ¬Όλ¦¬λŠ” μƒνƒœ μ €μž₯
info = [list(map(int, input().split())) for _ in range(K)] 

# μ™Όμͺ½
def left(n, d) :
    if n < 0 :
        return
    if graph[n][2] != graph[n + 1][6] :    # κ·Ή 비ꡐ
        left(n-1, -d)       # μ™Όμͺ½ 쑰사
        graph[n].rotate(d)

# 였λ₯Έμͺ½
def right(n, d) :
    if n > 3 :
        return
    if graph[n][6] != graph[n - 1][2] :    # κ·Ή 비ꡐ
        right(n+1, -d)       # 였λ₯Έμͺ½ 쑰사
        graph[n].rotate(d)

for i in range(K) :
    num = info[i][0] - 1        # ν†±λ‹ˆλ°”ν€΄
    direction = info[i][1]      # μ‹œκ³„, λ°˜μ‹œκ³„
    left(num - 1, -direction)
    right(num + 1, -direction)
    graph[num].rotate(direction)

result = 0

if graph[0][0] == '1':
    result += 1
if graph[1][0] == '1':
    result += 2
if graph[2][0] == '1':
    result += 4
if graph[3][0] == '1':
    result += 8

print(result)
728x90
λ°˜μ‘ν˜•
Comments