π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[BAEKJOON python] 20056_λ§λ²μ¬ μμ΄μ νμ΄μ΄λ³Ό λ³Έλ¬Έ
π¦₯ μ½ν
/BAEKJOON
[BAEKJOON python] 20056_λ§λ²μ¬ μμ΄μ νμ΄μ΄λ³Ό
μ§μ§μνμΉ΄ 2023. 4. 6. 01:39728x90
λ°μν
λ§λ²μ¬ μμ΄μ νμ΄μ΄λ³Ό
λ§λ²μ¬ μμ΄κ° ν¬κΈ°κ° N×NμΈ κ²©μμ νμ΄μ΄λ³Ό Mκ°λ₯Ό λ°μ¬
κ°μ₯ μ²μμ νμ΄μ΄λ³Όμ κ°μ μμΉμμ μ΄λμ λκΈ°
iλ² νμ΄μ΄λ³Όμ μμΉλ (ri, ci), μ§λμ miμ΄κ³ , λ°©ν₯μ di, μλ ₯μ si
격μμ νκ³Ό μ΄μ 1λ²λΆν° Nλ²κΉμ§ λ²νΈ
νμ΄μ΄λ³Όμ λ°©ν₯μ μ΄λ€ μΉΈκ³Ό μΈμ ν 8κ°μ μΉΈμ λ°©ν₯ (↑β→β↓β←β)
λ§λ²μ¬ μμ΄κ° λͺ¨λ νμ΄μ΄λ³Όμκ² μ΄λμ λͺ λ Ή
1. λͺ¨λ νμ΄μ΄λ³Όμ΄ μμ μ λ°©ν₯ diλ‘ μλ ₯ siμΉΈ λ§νΌ μ΄λ
μ΄λνλ μ€μλ κ°μ μΉΈμ μ¬λ¬ κ°μ νμ΄μ΄λ³Όμ΄ μμ μλ μμ
2. μ΄λμ΄ λͺ¨λ λλ λ€, 2κ° μ΄μμ νμ΄μ΄λ³Όμ΄ μλ μΉΈμμμ κ²½μ°
a. κ°μ μΉΈμ μλ νμ΄μ΄λ³Όμ λͺ¨λ νλλ‘ ν©μ³μ§
b. νμ΄μ΄λ³Όμ 4κ°μ νμ΄μ΄λ³Όλ‘ λλμ΄μ§
c. λλμ΄μ§ νμ΄μ΄λ³Όμ μ§λ, μλ ₯, λ°©ν₯
- μ§λμ ⌊(ν©μ³μ§ νμ΄μ΄λ³Ό μ§λμ ν©)/5⌋
- μλ ₯μ ⌊(ν©μ³μ§ νμ΄μ΄λ³Ό μλ ₯μ ν©)/(ν©μ³μ§ νμ΄μ΄λ³Όμ κ°μ)⌋
- ν©μ³μ§λ νμ΄μ΄λ³Όμ λ°©ν₯μ΄ λͺ¨λ νμμ΄κ±°λ λͺ¨λ μ§μμ΄λ©΄, λ°©ν₯μ 0, 2, 4, 6μ΄κ³ , κ·Έλ μ§ μμΌλ©΄ 1, 3, 5, 7
d. μ§λμ΄ 0μΈ νμ΄μ΄λ³Όμ μλ©Έλμ΄ μμ΄μ§
λ§λ²μ¬ μμ΄κ° μ΄λμ Kλ² λͺ λ Ήν ν, λ¨μμλ νμ΄μ΄λ³Ό μ§λμ ν©
첫째 μ€μ N, M, K
λμ§Έ μ€λΆν° Mκ°μ μ€μ νμ΄μ΄λ³Όμ μ 보 (ri, ci, mi, si, di)
μλ‘ λ€λ₯Έ λ νμ΄μ΄λ³Όμ μμΉκ° κ°μ κ²½μ°λ μ λ ₯μΌλ‘ μ£Όμ΄μ§μ§ μμ
# N×NμΈ κ²©μμ νμ΄μ΄λ³Ό Mκ°, μ΄λ λͺ
λ Ή μ k
n, m, k = map(int, input().split())
# 8κ°μ μΉΈμ λ°©ν₯ (↑β→β↓β←β)
dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]
board = [[[] for _ in range(n)] for _ in range(n)]
for i in range(m):
# νμ΄μ΄λ³Όμ μμΉλ (ri, ci), μ§λμ miμ΄κ³ , λ°©ν₯μ di, μλ ₯μ si
r, c, mm, s, d = map(int, input().split())
# νμ¬ νμ΄μ΄λ³Όμ νκ³Ό μ΄μ ν΄λΉνλ μ 보(μ§λ, μλ ₯, λ°©ν₯) μ μ₯
board[r - 1][c - 1].append([mm, s, d])
def move():
b = [[[] for _ in range(n)] for _ in range(n)]
for i in range(n):
for j in range(n):
# νμ΄μ΄λ³Όμ΄ μλ€
if len(board[i][j]) == 0:
continue
for p in board[i][j]:
x, y = i, j
mm, s, d = p
# μ΄λ ν μΉΈ μ % Nλ‘ μ²λ¦¬
nx = (x + dx[d] * s) % n
ny = (y + dy[d] * s) % n
b[nx][ny].append([mm, s, d])
for i in range(n):
for j in range(n):
# νμ΄μ΄λ³Όμ΄ ν κ° μ΄ν μ‘΄μ¬
if len(b[i][j]) <= 1:
continue
# μ§λμ (ν©μ³μ§ νμ΄μ΄λ³Ό μ§λμ ν©)/5
# μλ ₯μ (ν©μ³μ§ νμ΄μ΄λ³Ό μλ ₯μ ν©)/(ν©μ³μ§ νμ΄μ΄λ³Όμ κ°μ)
# ν©μ³μ§λ νμ΄μ΄λ³Όμ λ°©ν₯μ΄ λͺ¨λ νμ or μ§μ
# λ°©ν₯μ 0, 2, 4, 6 κ·Έλ μ§ μμΌλ©΄ 1, 3, 5, 7
mm_sum, s_sum, oodd, eeven = 0, 0, True, True
num = len(b[i][j])
for p in b[i][j]:
mm, s, d = p
mm_sum += mm
s_sum += s
# νμ
if (d % 2 == 1):
eeven = False
else:
oodd = False
# μ΄κΈ°ν ν΄μ£Όκ³ λ€μ μλ‘μ΄ μ 보 λ£κΈ°
b[i][j] = []
# μλ©Έ~
if mm_sum < 5:
continue
else:
# λͺ¨λ νμ μ΄κ±°λ μ§μ
if eeven or oodd:
for q in [0, 2, 4, 6]:
b[i][j].append([mm_sum // 5, s_sum // num, q])
else:
for q in [1, 3, 5, 7]:
b[i][j].append([mm_sum // 5, s_sum // num, q])
for i in range(n):
for j in range(n):
board[i][j] = b[i][j]
for _ in range(k):
move()
answer = 0
for i in range(n):
for j in range(n):
# νμ¬ λ¨μμλ νμ΄μ΄λ³Όμ μ§λν©μ κ΅¬ν΄ μΆλ ₯
for b in board[i][j]:
answer += b[0]
print(answer)
μμ μ λ ₯
4 2 2
1 1 5 2 2
1 4 7 1 6
μμ μΆλ ₯
8
μ΄λ² λ¬Έμ λ μ¬λ°μλΉ
λ§λ²μ¬ .... γ γ γ μ΄ νμ΄μ΄λ³Ό~
μ΄λΆ κΊΌ μ°Έκ³ .. ^_^
728x90
λ°μν
'π¦₯ μ½ν > BAEKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BAEKJOON python] 20058_λ§λ²μ¬ μμ΄μ νμ΄μ΄μ€ν° (0) | 2023.04.07 |
---|---|
[BAEKJOON python] 20057_λ§λ²μ¬ μμ΄μ ν λ€μ΄λ (0) | 2023.04.07 |
[BAEKJOON python] 17837_μλ‘μ΄ κ²μ 2 (0) | 2023.04.06 |
[BAEKJOON python] 17142_μ°κ΅¬μ 3 (0) | 2023.04.05 |
[BAEKJOON python] 17140_μ΄μ°¨μ λ°°μ΄κ³Ό μ°μ° (0) | 2023.04.05 |
Comments