๐ŸŽฒ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ

  • ์‹œ๊ฐ„ ์ œํ•œ: 2์ดˆ
  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ: 512MB

๐Ÿ“„ ๋ฌธ์ œ

  • ํฌ๊ธฐ๊ฐ€ N x M์ธ ์ง€๋„๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ง€๋„์˜ ์˜ค๋ฅธ์ชฝ์€ ๋™์ชฝ, ์œ„์ชฝ์€ ๋ถ์ชฝ์ด๋‹ค. ์ด ์ง€๋„์˜ ์œ„์— ์ฃผ์‚ฌ์œ„๊ฐ€ ํ•˜๋‚˜ ๋†“์—ฌ์ ธ ์žˆ์œผ๋ฉฐ, ์ฃผ์‚ฌ์œ„์˜ ์ „๊ฐœ๋„๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ง€๋„์˜ ์ขŒํ‘œ๋Š” (r, c)๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ, r๋Š” ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜, c๋Š” ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์นธ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

  • ์ฃผ์‚ฌ์œ„๋Š” ์ง€๋„ ์œ„์— ์œ— ๋ฉด์ด 1์ด๊ณ , ๋™์ชฝ์„ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์ด 3์ธ ์ƒํƒœ๋กœ ๋†“์—ฌ์ ธ ์žˆ์œผ๋ฉฐ, ๋†“์—ฌ์ € ์žˆ๋Š” ๊ณณ์˜ ์ขŒํ‘œ๋Š”(x, y)์ด๋‹ค. 
  • ๊ฐ€์žฅ ์ฒ˜์Œ์— ์ฃผ์‚ฌ์œ„์—๋Š” ๋ชจ๋“  ๋ฉด์— 0์ด ์ ํ˜€์ ธ ์žˆ๋‹ค. 
  • ์ง€๋„์˜ ๊ฐ ์นธ์—๋Š” ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์“ฐ์—ฌ์ ธ ์žˆ๋‹ค. ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ธ์„ ๋•Œ, ์ด๋™ํ•œ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ 0์ด๋ฉด, ์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์นธ์— ๋ณต์‚ฌ๋œ๋‹ค. 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด์— ๋ณต์‚ฌ๋˜๋ฉฐ, ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 0์ด ๋œ๋‹ค. 
  • ์ฃผ์‚ฌ์œ„๋Š” ์ง€๋„์˜ ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ช…๋ น์„ ๋ฌด์‹œํ•ด์•ผ ํ•˜๋ฉฐ, ์ถœ๋ ฅ๋„ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

์ž…๋ ฅ

  • ์ฒซ์งธ ์ค„์— ์ง€๋„์˜ ์„ธ๋กœ ํฌ๊ธฐ N, ๊ฐ€๋กœ ํฌ๊ธฐ M(1 <= N, M <= 20), ์ฃผ์‚ฌ์œ„๋ฅผ ๋†“์€ ๊ณณ์˜ ์ขŒํ‘œ x, y (0 <= x <= N -1, 0 <= y <= M -1), ๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น์˜ ๊ฐœ์ˆ˜ K( 1 <= K <= 1000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ง€๋„์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ๋ถ์ชฝ๋ถ€ํ„ฐ ๋‚จ์ชฝ์œผ๋กœ, ๊ฐ ์ค„์€ ์„œ์ชฝ๋ถ€ํ„ฐ ๋™์ชฝ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. 
  • ์ฃผ์‚ฌ์œ„๋ฅผ ๋†“์€ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” ํ•ญ์ƒ 0์ด๋‹ค.
  • ์ง€๋„์˜ ๊ฐ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 10๋ฏธ๋งŒ์˜ ์ž์—ฐ์ˆ˜ ๋˜๋Š” 0์ด๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์ค„์—๋Š” ์ด๋™ํ•˜๋Š” ๋ช…๋ น์ด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋™์ชฝ์€ 1, ์„œ์ชฝ์€ 2, ๋ถ์ชฝ์€ 3, ๋‚จ์ชฝ์€ 4๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

  • ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์‚ฌ์œ„์˜ ์œ— ๋ฉด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ช…๋ น์„ ๋ฌด์‹œํ•ด์•ผ ํ•˜๋ฉฐ, ์ถœ๋ ฅ๋„ ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

๐Ÿ’ก ๋ฌธ์ œ ํ’€์ด ์•„์ด๋””์–ด

  • ๊ทœ์น™์— ๋งž์ถฐ ๋‹จ์ˆœ ๊ตฌํ˜„ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Œ.
  • ๊ทœ์น™
    1. ๋‚จ์ชฝ์ด๋™ โฌ‡๏ธ 
      1. front -> down
      2. down -> back
      3. back -> up
      4. up -> front
    2. ๋ถ์ชฝ์ด๋™ โฌ†๏ธ
      1. front -> up
      2. up -> back
      3. back -> down
      4. down -> front
    3. ๋™์ชฝ์ด๋™ โžก๏ธ
      1. right -> down
      2. down -> left
      3. left -> up 
      4. up -> right
    4. ์„œ์ชฝ์ด๋™ โฌ…๏ธ
      1. left -> down
      2. down -> right
      3. right -> up
      4. up -> left

โœ… ์ •๋‹ต ์ฝ”๋“œ

# ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ
from sys import stdin

input = stdin.readline

N, M, x, y, k = map(int, input().split())
maps = []

for _ in range(N):
    maps.append(list(map(int, input().split())))

commands = list(map(int, input().split()))

up = 0
down = 0
right = 0
front = 0
back = 0
left = 0

SOUTH, NORTH, EAST, WEST = 4, 3, 1, 2

# SOUTH => front
# NORTH => back
# EAST => left
# WEST => right

positions = (x, y)

for c in commands:

    # ์ด๋™ํ•œ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ 0์ด๋ฉด, ์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์นธ์— ๋ณต์‚ฌ๋œ๋‹ค.
    # 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์‚ฌ์œ„์˜ ๋ฐ”๋‹ฅ๋ฉด์œผ๋กœ ๋ณต์‚ฌ๋˜๋ฉฐ, ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 0์ด ๋œ๋‹ค.
    if c == SOUTH:
        nx, ny = positions[0] + 1, positions[1]
    elif c == NORTH:
        nx, ny = positions[0] - 1, positions[1]
    elif c == WEST:
        nx, ny = positions[0], positions[1] -1
    else:
        nx, ny = positions[0], positions[1] + 1

    # ๋ฒ”์œ„ ๋„˜์–ด๊ฐ€๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•จ
    if 0 <= nx < N and 0 <= ny < M:
        positions = (nx, ny)
    else:
        continue

    if c == SOUTH:
        tmp = front
        front = up
        up = back
        back = down
        down = tmp
    elif c == NORTH:
        tmp = up
        up = front
        front = down
        down = back
        back = tmp
    elif c == WEST:
        tmp = left
        left = up
        up = right
        right = down
        down = tmp
    else:
        tmp = right
        right = up
        up = left
        left = down
        down = tmp

    if maps[nx][ny] == 0:
        maps[nx][ny] = down
    else:
        down = maps[nx][ny]
        maps[nx][ny] = 0
    # print()
    # print(' ', back)
    # print(left, up, right)
    # print(' ', front)
    # print(' ', down)
    print(up)
728x90

+ Recent posts