๋ฌธ์
ํฌ๊ธฐ๊ฐ N×M์ธ ์ง๋๊ฐ ์กด์ฌํ๋ค. ์ง๋์ ์ค๋ฅธ์ชฝ์ ๋์ชฝ, ์์ชฝ์ ๋ถ์ชฝ์ด๋ค. ์ด ์ง๋์ ์์ ์ฃผ์ฌ์๊ฐ ํ๋ ๋์ฌ์ ธ ์์ผ๋ฉฐ, ์ฃผ์ฌ์์ ์ ๊ฐ๋๋ ์๋์ ๊ฐ๋ค. ์ง๋์ ์ขํ๋ (r, c)๋ก ๋ํ๋ด๋ฉฐ, r๋ ๋ถ์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์, c๋ ์์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์์ด๋ค.
2
4 1 3
5
6
์ฃผ์ฌ์๋ ์ง๋ ์์ ์ ๋ฉด์ด 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 ≤ 1,000)๊ฐ ์ฃผ์ด์ง๋ค.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋์ ์ฐ์ฌ ์๋ ์๊ฐ ๋ถ์ชฝ๋ถํฐ ๋จ์ชฝ์ผ๋ก, ๊ฐ ์ค์ ์์ชฝ๋ถํฐ ๋์ชฝ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ฃผ์ฌ์๋ฅผ ๋์ ์นธ์ ์ฐ์ฌ ์๋ ์๋ ํญ์ 0์ด๋ค. ์ง๋์ ๊ฐ ์นธ์ ์ฐ์ฌ ์๋ ์๋ 10 ๋ฏธ๋ง์ ์์ฐ์ ๋๋ 0์ด๋ค.
๋ง์ง๋ง ์ค์๋ ์ด๋ํ๋ ๋ช ๋ น์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋์ชฝ์ 1, ์์ชฝ์ 2, ๋ถ์ชฝ์ 3, ๋จ์ชฝ์ 4๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ด๋ํ ๋๋ง๋ค ์ฃผ์ฌ์์ ์ ๋ฉด์ ์ฐ์ฌ ์๋ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํค๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ช ๋ น์ ๋ฌด์ํด์ผ ํ๋ฉฐ, ์ถ๋ ฅ๋ ํ๋ฉด ์ ๋๋ค.
https://www.acmicpc.net/problem/14499
๐ก ํ์ด ๋ฐ ์ฝ๋
n, m, x, y, k = map(int, input().split())
data = []
for _ in range(n):
data.append(list(map(int, input().split())))
command = list(map(int, input().split()))
dice = [0]*6
dx, dy = [0, 0, -1, 1], [1, -1, 0, 0]
result = []
for c in command:
# ์ง๋ ์นธ ์ ํจ๋ฒ์ ํ์ธ
nx, ny = x + dx[c-1], y + dy[c-1]
if nx < 0 or nx >= n or ny < 0 or ny >= m:
continue
# ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ
if c <= 2:
temp = [(3, dice[3]), (0, dice[0]), (2, dice[2]), (5, dice[5])]
else:
temp = [(1, dice[1]), (0, dice[0]), (4, dice[4]), (5, dice[5])]
if c % 2:
for i in range(1, 4):
dice[temp[i][0]] = temp[i-1][1]
dice[temp[0][0]] = temp[-1][1]
else:
for i in range(3):
dice[temp[i][0]] = temp[i+1][1]
dice[temp[-1][0]] = temp[0][1]
# ์นธ์ ์ ํ ์ ํ์ธ ํ ์ฃผ์ฌ์ ๋ฐ๋ฅ๋ฉด๊ณผ ๋ณต์ฌ
if data[nx][ny]:
dice[-1] = data[nx][ny]
data[nx][ny] = 0
else:
data[nx][ny] = dice[-1]
# ํ์ฌ ์ขํ ๊ฐฑ์ ๋ฐ ์ฃผ์ฌ์ ์๋ฉด ์ ์ฅ
x, y = nx, ny
result.append(dice[0])
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
for r in result:
print(r)
์ด๋ ํ๋ ๋ช ๋ น์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ๋ค.
- ํ์ฌ ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ํ ์นธ์ ์ ํจ ๋ฒ์ ํ์ธ
- ์ฃผ์ฌ์๋ฅผ ๊ตด๋ ค ์ฃผ์ฌ์ ์์น๋ณ ๊ฐ ๋ณ๊ฒฝ
- ์ง๋์ ์นธ์ ์ ํ ์๋ฅผ ํ์ธํด 0์ด๋ฉด ์ฃผ์ฌ์ ๋ฐ๋ฅ๋ฉด์์ ์ด๋ํ ์นธ์ผ๋ก ๋ณต์ฌ, 0์ด ์๋๋ฉด ์ด๋ํ ์นธ์์ ์ฃผ์ฌ์ ๋ฐ๋ฅ๋ฉด์ผ๋ก ๋ณต์ฌ ํ ์นธ์ 0์ผ๋ก ์ ์ฅ
- ํ์ฌ ์ขํ๊ฐ์ ๊ฐฑ์ ํ๊ณ ์ฃผ์ฌ์ ์๋ฉด์ ์ ํ ๊ฐ์ ๋ฐฐ์ด์ ์ ์ฅ
- ์ฃผ์ฌ์ ์๋ฉด์ด ์ ํ ๋ฐฐ์ด ์ถ๋ ฅ
๊ตฌํ์ ํต์ฌ์ ์ฃผ์ฌ์๋ฅผ ๊ตด๋ ค ์ ์ ํ๊ฒ ์ฃผ์ฌ์ ์์น๋ณ ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ๋ ์์ ์ด๋ค. ํ ๋ธ๋ก๊ทธ์ ์ด๋ฅผ ์ค๋ช ํ ๊ทธ๋ฆผ์ด ์์ด ๊ฐ์ ธ์ ์กฐ๊ธ ์์ ํ๋ค.
์์ ๊ฐ์ด ์ฃผ์ฌ์๋ฅผ ๋, ๋ถ, ์, ๋จ ๋ฐฉํฅ์ผ๋ก ๊ตด๋ฆด ๋ ๊ฐ ์ฃผ์ฌ์ ์์น๊ฐ ์ด๋ป๊ฒ ๋ณํ๋์ง ๊ท์น์ ์ฐพ์ ๊ตฌํํ๋ค. ๊ทธ์ธ ๋ค๋ฅธ ์์ ์ ํฌ๊ฒ ์ด๋ ต์ง ์๋ค.
'Algorithm > ๐ Baekjoon Judge' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 8980๋ฒ ํ๋ฐฐ - ํ์ด์ฌ(Python) (0) | 2022.07.04 |
---|---|
[BOJ] ๋ฐฑ์ค 15683๋ฒ ๊ฐ์ - ํ์ด์ฌ(Python) (0) | 2022.04.04 |
[BOJ] ๋ฐฑ์ค 20055๋ฒ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด - ํ์ด์ฌ(Python) (0) | 2022.04.01 |
[BOJ] ๋ฐฑ์ค 16234๋ฒ ์ธ๊ตฌ ์ด๋ - ํ์ด์ฌ(Python) (1) | 2022.03.31 |
[BOJ] ๋ฐฑ์ค 14500๋ฒ ํ ํธ๋ก๋ฏธ๋ ธ - ํ์ด์ฌ(Python) (0) | 2022.03.31 |