π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[BAEKJOON python] 17143_λμμ λ³Έλ¬Έ
728x90
λ°μν
λμμμ κ°μ₯ μ€λ₯Έμͺ½ μ΄μ μ€λ₯Έμͺ½ μΉΈμ μ΄λνλ©΄ μ΄λμ λ©μΆ€
1μ΄ λμ μΌμ΄λλ μΌ
1. λμμμ΄ μ€λ₯Έμͺ½μΌλ‘ ν μΉΈ μ΄λ
2. λμμμ΄ μλ μ΄μ μλ μμ΄ μ€μμ λ κ³Ό μ μΌ κ°κΉμ΄ μμ΄λ₯Ό μ‘μ
μμ΄λ₯Ό μ‘μΌλ©΄ 격μνμμ μ‘μ μμ΄κ° μ¬λΌμ§
3. μμ΄κ° μ΄λ
μμ΄λ μ λ ₯μΌλ‘ μ£Όμ΄μ§ μλλ‘ μ΄λνκ³ , μλμ λ¨μλ μΉΈ/μ΄
격μνμ κ²½κ³λ₯Ό λλ κ²½μ°μλ λ°©ν₯μ λ°λλ‘ λ°κΏμ μλ ₯μ μ μ§νμ±λ‘ μ΄λ
μμ΄κ° μ΄λμ λ§μΉ νμ ν μΉΈμ μμ΄κ° λ λ§λ¦¬ μ΄μ μμ μ μμ
ν¬κΈ°κ° κ°μ₯ ν° μμ΄κ° λλ¨Έμ§ μμ΄λ₯Ό λͺ¨λ μ‘μλ¨Ήμ
λμμμ΄ μμ΄ λμλ₯Ό νλ 격μνμ μνκ° μ£Όμ΄μ‘μ λ, λμμμ΄ μ‘μ μμ΄ ν¬κΈ°μ ν©
첫째 μ€μ 격μνμ ν¬κΈ° R, Cμ μμ΄μ μ M
λμ§Έ μ€λΆν° Mκ°μ μ€μ μμ΄μ μ 보
(r, c)λ μμ΄μ μμΉ, sλ μλ ₯, dλ μ΄λ λ°©ν₯, zλ ν¬κΈ°
dκ° 1 μ, 2 μλ, 3 μ€λ₯Έμͺ½, 4 μΌμͺ½
λ μμ΄κ° κ°μ ν¬κΈ°λ₯Ό κ°λ κ²½μ°λ μκ³ , νλμ μΉΈμ λ μ΄μμ
# 격μνμ ν¬κΈ° R, Cμ μμ΄μ μ M
r, c, m = map(int, input().split())
# λΆ - λ¨ - λ - μ
dx = [-1, 1, 0, 0]
dy = [0, 0, 1, -1]
# 3μ°¨μ λ°°μ΄
graph = [[[] for _ in range(c)] for _ in range(r)]
for _ in range(m):
# (r, c)λ μμ΄μ μμΉ, sλ μλ ₯, dλ μ΄λ λ°©ν₯, zλ ν¬κΈ°
x, y, s, d, z = map(int, input().split())
# μμ΄μ μ 보 (ν¬κΈ°, μλ ₯, μ΄λλ°©ν₯)μ μ
λ ₯λ°μ μ μ₯
graph[x - 1][y - 1].append([z, s, d - 1])
def moving():
g = [[[] for _ in range(c)] for _ in range(r)]
for i in range(r):
for j in range(c):
if graph[i][j]:
x, y = i, j
# μμ΄μ μ 보 (ν¬κΈ°, μλ ₯, μ΄λλ°©ν₯)
z, s, d = graph[i][j][0]
s_count = s
# μλ ₯μ΄ λλ λ κΉμ§ λ°λ³΅
while s_count > 0:
nx = x + dx[d]
ny = y + dy[d]
# κ²½κ³μ μ λμ΄κ°λ€λ©΄
if 0 > nx or nx >= r or ny < 0 or ny >= c:
# λΆ -> λ¨, λ¨ -> λΆ, λ -> μ, μ- > λμΌλ‘ λ°©ν₯μ λ³κ²½
if d in [0, 2]:
d += 1
elif d in [1, 3]:
d -= 1
continue
else:
x, y = nx, ny
s_count -= 1
# gμ μ μ₯λ μμ΄μ μμΉμ μ 보
g[x][y].append([z, s, d])
# graph 리μ€νΈμ μ μ₯
for i in range(r):
for j in range(c):
graph[i][j] = g[i][j]
eat_count = 0
for i in range(c):
for j in range(r):
if graph[j][i]:
# κ°μ₯ κ°κΉμ΄ μμ΄
value = graph[j][i][0]
# λ¨Ήμ΄λΌ!
eat_count += value[0]
# μμ΄μ ΈλΌ!
graph[j][i].remove(value)
break
# 1μ΄λμ μμ§μ¬!
moving()
for p in range(r):
for q in range(c):
# λ λ§λ¦¬ μ΄μμ΄ κ°μ μΉΈμ μμ κ²½μ°
if len(graph[p][q]) >= 2:
# λ¨Όμ μ λ ¬ν΄λ΄! (ν° λλΆν°)
graph[p][q].sort(reverse=True)
# ν° λμ΄ 1λ§λ¦¬ λ λκΉμ§
while len(graph[p][q]) >= 2:
# μμ΄μ Έλ! λ¨Ήμ΄λ²λ €! (μ€λ₯Έμͺ½ μμ΄μ§μ§λ‘± μμ λλΆν°)
graph[p][q].pop()
print(eat_count)
μμ μ λ ₯ 1
4 6 8
4 1 3 3 8
1 3 5 2 9
2 4 8 4 1
4 5 0 1 4
3 3 1 2 7
1 5 8 4 3
3 6 2 1 2
2 2 2 3 5
μμ μΆλ ₯ 1
22
μ« μ¬λ°λ λ¬Έμ μ¬λ ~
https://developer-ellen.tistory.com/60
μ΄ λΆκΊΌ μ°Έκ³ ν¨ γ γ
μ°Έκ³ ν΄μ κ·Έλ°κ° μμ μ΄ν΄ μμ μ λ¨~~~
728x90
λ°μν
'π¦₯ μ½ν > BAEKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BAEKJOON python] 17142_μ°κ΅¬μ 3 (0) | 2023.04.05 |
---|---|
[BAEKJOON python] 17140_μ΄μ°¨μ λ°°μ΄κ³Ό μ°μ° (0) | 2023.04.05 |
[BAEKJOON python] 16234_μΈκ΅¬ μ΄λ (0) | 2022.10.14 |
[BAEKJOON python] 15686_μΉν¨ λ°°λ¬ (0) | 2022.10.14 |
[BAEKJOON python] 15685_λλκ³€ μ»€λΈ (0) | 2022.10.14 |
Comments