DonHurry

[Python] ๋ฐฑ์ค€ 14499๋ฒˆ - ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ ๋ณธ๋ฌธ

Problem Solving

[Python] ๋ฐฑ์ค€ 14499๋ฒˆ - ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ

_๋„๋… 2024. 1. 20. 10:00

๐Ÿ“– ๋ฌธ์ œ

 

14499๋ฒˆ: ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ

์ฒซ์งธ ์ค„์— ์ง€๋„์˜ ์„ธ๋กœ ํฌ๊ธฐ N, ๊ฐ€๋กœ ํฌ๊ธฐ M (1 ≤ N, M ≤ 20), ์ฃผ์‚ฌ์œ„๋ฅผ ๋†“์€ ๊ณณ์˜ ์ขŒํ‘œ x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), ๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น์˜ ๊ฐœ์ˆ˜ K (1 ≤ K ≤ 1,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ง€

www.acmicpc.net

 

๐Ÿ”Ž ํ’€์ด

๋ฐฑ์ค€ ์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ ๋ฌธ์ œ์ง‘์— ์žˆ๋Š” ๋ฌธ์ œ๋กœ, ์ „ํ˜•์ ์ธ ๊ตฌํ˜„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ์ฐพ์•„์•ผํ•  ๊ฒƒ์€ ์ฃผ์‚ฌ์œ„๊ฐ€ ๋™์„œ๋‚จ๋ถ ๊ฐ๊ฐ์œผ๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ, ๊ธฐ์กด ์œ„์น˜์™€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š” ๊ฐ€์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ํ‘œ๋Š” ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์ฃผ์‚ฌ์œ„ ์ „๊ฐœ๋„๋ฅผ ๊ฐ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ์˜ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ธ ํ‘œ์ž…๋‹ˆ๋‹ค.

๋ฐฉํ–ฅ / ์ธ๋ฑ์Šค 1 2 3 4 5 6
1 (๋™์ชฝ) 3 2 6 1 5 4
2 (์„œ์ชฝ) 4 2 1 6 5 3
3 (๋ถ์ชฝ) 2 6 3 4 1 5
4 (๋‚จ์ชฝ) 5 1 3 4 6 2

 

 

๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ฃผ์‚ฌ์œ„ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์€ ๋ณ€์ˆ˜์˜ ๋‹ค์ค‘ ํ• ๋‹น์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์‚ฌ์œ„๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ทœ์น™๋งŒ ์„ค์ •ํ•œ๋‹ค๋ฉด, ๋‚˜๋จธ์ง€ ๊ตฌํ˜„์ด ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ป ์ฝ”๋“œ

import sys
input=sys.stdin.readline

n, m, x, y, k = map(int, input().split())
grid = []
for _ in range(n):
    grid.append(list(map(int, input().split())))
orders = list(map(int, input().split()))

dice = [0] * 7
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]

for i in range(k):
    order = orders[i]
    # ์ƒˆ๋กœ์šด ์ขŒํ‘œ ์„ค์ •
    new_x = x + dx[order-1]
    new_y = y + dy[order-1]

    # ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น ๋ฌด์‹œ
    if not (0 <= new_x < n) or not (0 <= new_y < m):
        continue
    
    # ์ฃผ์‚ฌ์œ„ ์ด๋™
    if order == 1:
        dice[1], dice[3], dice[4], dice[6] = dice[3], dice[6], dice[1], dice[4]
    elif order == 2:
        dice[1], dice[3], dice[4], dice[6] = dice[4], dice[1], dice[6], dice[3]
    elif order == 3:
        dice[1], dice[2], dice[5], dice[6] = dice[2], dice[6], dice[1], dice[5]
    elif order == 4:
        dice[1], dice[2], dice[5], dice[6] = dice[5], dice[1], dice[6], dice[2]
    
    # ์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด๊ณผ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜ ๋ณ€๊ฒฝ
    if grid[new_x][new_y] == 0:
        grid[new_x][new_y] = dice[1]
    else:
        dice[1] = grid[new_x][new_y]
        grid[new_x][new_y] = 0
    
    # ์ขŒํ‘œ ์ €์žฅ
    x = new_x
    y = new_y

    print(dice[6])