โ๋ฌธ์
https://www.acmicpc.net/problem/14499
๋ฉ๋ชจ๋ฆฌ: 109544 KB, ์๊ฐ: 104 ms
๊ตฌํ, ์๋ฎฌ๋ ์ด์
ํฌ๊ธฐ๊ฐ N×M์ธ ์ง๋๊ฐ ์กด์ฌํ๋ค. ์ง๋์ ์ค๋ฅธ์ชฝ์ ๋์ชฝ, ์์ชฝ์ ๋ถ์ชฝ์ด๋ค. ์ด ์ง๋์ ์์ ์ฃผ์ฌ์๊ฐ ํ๋ ๋์ฌ์ ธ ์์ผ๋ฉฐ, ์ฃผ์ฌ์์ ์ ๊ฐ๋๋ ์๋์ ๊ฐ๋ค. ์ง๋์ ์ขํ๋ (r, c)๋ก ๋ํ๋ด๋ฉฐ, r๋ ๋ถ์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์, c๋ ์์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์์ด๋ค.
2
4 1 3
5
6
์ฃผ์ฌ์๋ ์ง๋ ์์ ์ ๋ฉด์ด 1์ด๊ณ , ๋์ชฝ์ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด 3์ธ ์ํ๋ก ๋์ฌ์ ธ ์์ผ๋ฉฐ, ๋์ฌ์ ธ ์๋ ๊ณณ์ ์ขํ๋ (x, y) ์ด๋ค. ๊ฐ์ฅ ์ฒ์์ ์ฃผ์ฌ์์๋ ๋ชจ๋ ๋ฉด์ 0์ด ์ ํ์ ธ ์๋ค.
์ง๋์ ๊ฐ ์นธ์๋ ์ ์๊ฐ ํ๋์ฉ ์ฐ์ฌ์ ธ ์๋ค. ์ฃผ์ฌ์๋ฅผ ๊ตด๋ ธ์ ๋, ์ด๋ํ ์นธ์ ์ฐ์ฌ ์๋ ์๊ฐ 0์ด๋ฉด, ์ฃผ์ฌ์์ ๋ฐ๋ฅ๋ฉด์ ์ฐ์ฌ ์๋ ์๊ฐ ์นธ์ ๋ณต์ฌ๋๋ค. 0์ด ์๋ ๊ฒฝ์ฐ์๋ ์นธ์ ์ฐ์ฌ ์๋ ์๊ฐ ์ฃผ์ฌ์์ ๋ฐ๋ฅ๋ฉด์ผ๋ก ๋ณต์ฌ๋๋ฉฐ, ์นธ์ ์ฐ์ฌ ์๋ ์๋ 0์ด ๋๋ค.
์ฃผ์ฌ์๋ฅผ ๋์ ๊ณณ์ ์ขํ์ ์ด๋์ํค๋ ๋ช ๋ น์ด ์ฃผ์ด์ก์ ๋, ์ฃผ์ฌ์๊ฐ ์ด๋ํ์ ๋ ๋ง๋ค ์๋จ์ ์ฐ์ฌ ์๋ ๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ฃผ์ฌ์๋ ์ง๋์ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํฌ ์ ์๋ค. ๋ง์ฝ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํค๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ช ๋ น์ ๋ฌด์ํด์ผ ํ๋ฉฐ, ์ถ๋ ฅ๋ ํ๋ฉด ์ ๋๋ค.
โ๐ปํ์ด
์ด ๋ฌธ์ ์์ ๊ฐ์ฅ ์ค์ํ ๊ฑด ์ฃผ์ฌ์๊ฐ ํ์ ๋๋ ๊ฑธ ์ด๋ป๊ฒ ํํํ ์ง์ด๋ค.
[1, 2, 3, 4, 5, 6]์ผ๋ก ์ฃผ์ฌ์๋ฅผ ํํํ๋ค๊ณ ํ์ ๋,
์ฃผ์ฌ์๋ฅผ ๋์ชฝ์ผ๋ก ๊ตด๋ฆฌ๋ฉด [1, 2, 3, 4, 5, 6] = [4, 2, 1, 6, 5, 3]์ด ๋๋ค. ์ฌ๊ธฐ์ 2์ 5๋ ์์น๊ฐ ๊ทธ๋๋ก ์์ผ๋ฏ๋ก 1, 3, 4, 6 = 4, 1, 6, 3์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ์ชฝ์ผ๋ก ๊ตด๋ฆฐ๋ค๊ณ ํด๋ณด์. ๊ทธ๋ผ [1, 2, 3, 4, 5, 6] = [5, 1, 3, 4, 6, 2]๊ฐ ๋๋ค. ์ฌ๊ธฐ์๋ 3๊ณผ 4๋ง ๊ทธ๋๋ก ์์ผ๋ฏ๋ก 1, 2, 5, 6 = 5, 1, 6, 2๋ก ๋ฐ๊พธ๋ฉด ๋๋ค. ์์ชฝ๊ณผ ๋จ์ชฝ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ฉด ๋๋ค.
์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆฐ ํ ํ์ฌ ์นธ์ด 0์ด๋ฉด ์ฃผ์ฌ์ ๋ฐ ๋ฉด์ ๋ณต์ฌํ๋ฉด ๋๋ค. ์๋๋ผ๋ฉด ์ฃผ์ฌ์ ๋ฐ ๋ฉด์ ํ์ฌ ์นธ์ ๋ณต์ฌํ๊ณ ํ์ฌ ์นธ์ 0์ผ๋ก ๋ง๋ค๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฉด์ ์ถ๋ ฅํ๋ฉด ๋๋ค. ์ด๋ ์ ๋ชจ๋ ๊ณผ์ ์ ์นธ์ ๋์ด๊ฐ์ง ์์์ผ์ง๋ง ๊ฐ๋ฅํ๋ค.
๐ป์ฝ๋
import sys
input = sys.stdin.readline
N, M, x, y, K = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(N)]
dice = [0, 0, 0, 0, 0, 0]
# ๋, ์, ๋ถ, ๋จ
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
def turn(o):
if o == 1: # ๋
dice[0], dice[2], dice[3], dice[5] = dice[3], dice[0], dice[5], dice[2]
elif o == 2: # ์
dice[0], dice[2], dice[3], dice[5] = dice[2], dice[5], dice[0], dice[3]
elif o == 3: # ๋ถ
dice[0], dice[1], dice[4], dice[5] = dice[4], dice[0], dice[5], dice[1]
else: # ๋จ
dice[0], dice[1], dice[4], dice[5] = dice[1], dice[5], dice[0], dice[4]
for o in list(map(int, input().split())):
nx, ny = x + dx[o - 1], y + dy[o - 1]
if 0 <= nx < N and 0 <= ny < M:
x, y = nx, ny
turn(o)
if board[x][y] == 0:
board[x][y] = dice[5]
else:
dice[5] = board[x][y]
board[x][y] = 0
print(dice[0])
๐ํ๊ธฐ
๋๋ ๋ณดํต ์ธ๋ก๋ฅผ y๋ก ํ๊ณ ๊ฐ๋ก๋ฅผ x๋ก ์์ฑํด์ ํธ๋๋ฐ ์ด ๋ฌธ์ ์์๋ x๊ฐ ์ธ๋ก์ด๊ณ y๊ฐ ๊ฐ๋ก๋ผ๊ณ ํ๋ค. ์ด๊ฒ ๋๋ฌธ์ ๋ช ๋ฒ์ ํ๋ ธ๋์ง๐ ์ง์ง ๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ๊ฒ ์ฝ์ด์ผ๊ฒ ๋ค..ใ
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14500. ํ ํธ๋ก๋ฏธ๋ ธ/Python - Gold4 (2) | 2025.08.06 |
---|---|
[๋ฐฑ์ค] 14502. ์ฐ๊ตฌ์/Python - Gold4 (0) | 2025.08.03 |
[๋ฐฑ์ค] 3190. ๋ฑ/Python - Gold4 (3) | 2025.07.30 |
[๋ฐฑ์ค] 14503. ๋ก๋ด ์ฒญ์๊ธฐ/Python - Gold5 (1) | 2025.07.29 |
[๋ฐฑ์ค] 14891. ํฑ๋๋ฐํด/Python - Gold5 (2) | 2025.07.25 |