๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[BAEKJOON python] 14499_์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ๋ณธ๋ฌธ
๐ฆฅ ์ฝํ
/BAEKJOON
[BAEKJOON python] 14499_์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ
์ง์ง์ํ์นด 2022. 10. 10. 21:18728x90
๋ฐ์ํ
ํฌ๊ธฐ๊ฐ N×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 ≤ 1,000)
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋์ ์ฐ์ฌ ์๋ ์๊ฐ ๋ถ์ชฝ๋ถํฐ ๋จ์ชฝ์ผ๋ก,
๊ฐ ์ค์ ์์ชฝ๋ถํฐ ๋์ชฝ ์์๋๋ก ์ฃผ์ด์ง๋ค.
์ฃผ์ฌ์๋ฅผ ๋์ ์นธ์ ์ฐ์ฌ ์๋ ์๋ ํญ์ 0์ด๋ค.
์ง๋์ ๊ฐ ์นธ์ ์ฐ์ฌ ์๋ ์๋ 10 ๋ฏธ๋ง์ ์์ฐ์ ๋๋ 0์ด๋ค.
๋ง์ง๋ง ์ค์๋ ์ด๋ํ๋ ๋ช ๋ น์ด ์์๋๋ก ์ฃผ์ด์ง๋ค.
๋์ชฝ์ 1, ์์ชฝ์ 2, ๋ถ์ชฝ์ 3, ๋จ์ชฝ์ 4๋ก ์ฃผ์ด์ง๋ค.
์ด๋ํ ๋๋ง๋ค ์ฃผ์ฌ์์ ์ ๋ฉด์ ์ฐ์ฌ ์๋ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ง์ฝ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํค๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ช ๋ น์ ๋ฌด์ํด์ผ ํ๋ฉฐ, ์ถ๋ ฅ๋ ํ๋ฉด ์ ๋๋ค
# ์ง๋์ ์ธ๋ก ํฌ๊ธฐ N
# ๊ฐ๋ก ํฌ๊ธฐ M (1 ≤ N, M ≤ 20)
# ์ฃผ์ฌ์๋ฅผ ๋์ ๊ณณ์ ์ขํ x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1)
# ๋ช
๋ น์ ๊ฐ์
N, M, x, y, K = map(int, input().split())
graph = []
for i in range(N) :
graph.append(list(map(int, input().split())))
command = list(map(int, input().split()))
# ์ ์๋ ์ผ ์ค
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
dice = [0, 0, 0, 0, 0, 0]
def turn(dir) :
a, b, c, d, e, f = dice[0], dice[1], dice[2], dice[3], dice[4], dice[5]
if dir == 1 : # ๋์ชฝ. ์ค๋ฅธ์ชฝ์ผ๋ก~
dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = d, b, a, f, e, c
elif dir == 2 : # ์์ชฝ. ์ผ์ชฝ์ผ๋ก~
dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = c, b, f, a, e, d
elif dir == 3 : # ๋ถ์ชฝ. ์๋ก~
dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = b, f, c, d, a, e
else : # ๋จ์ชฝ. ์๋๋ก~
dice[0], dice[1], dice[2], dice[3], dice[4], dice[5] = e, a, c, d, f, b
nx, ny = x, y
for i in command :
nx += dx[i - 1]
ny += dy[i - 1]
# ๋ฒ์ ๋ฐ์ด๋ผ๋ฉด ๋ฌด์
if nx < 0 or nx >= N or ny < 0 or ny >= M :
nx -= dx[i - 1]
ny -= dy[i - 1]
continue
turn(i)
# ์นธ์ด 0์ด๋ฉด ์ฃผ์ฌ์ ๋ฐ๋ฅ ๋ณต์ฌ
if graph[nx][ny] == 0 :
graph[nx][ny] = dice[5]
# ์นธ์ด 0 ์๋๋ฉด ์นธ ๋ฒํธ๋ฅผ ์ฃผ์ฌ์ ๋ฐ๋ฅ์ ๋ณต์ฌ ํ๊ณ ์นธ์ 0
else :
dice[5] = graph[nx][ny]
graph[nx][ny]= 0
print(dice[0])
# input
# 4 2 0 0 8
# 0 2
# 3 4
# 5 6
# 7 8
# 4 4 4 1 3 3 3 2
# output
# 0
# 0
# 3
# 0
# 0
# 8
# 6
# 3โ
728x90
๋ฐ์ํ
'๐ฆฅ ์ฝํ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON python] 14502_์ฐ๊ตฌ์ (0) | 2022.10.10 |
---|---|
[BAEKJOON python] 14500_ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2022.10.10 |
[BAEKJOON python] 3190_๋ฑ (0) | 2022.10.10 |
[BAEKJOON python] 12100_2048(easy) (0) | 2022.10.10 |
[BAEKJOON python] 13460_๊ตฌ์ฌ ํ์ถ2 (0) | 2022.10.10 |
Comments