ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/๋ฐฑ์ค
๋ฐฑ์ค: 21610 ๋ง๋ฒ์ฌ ์์ด์ ๋น๋ฐ๋ผ๊ธฐ
dirmathfl 2021. 4. 28. 20:34728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
8 ๋ฐฉํฅ ํ์๊ณผ, ๋๊ฐ์ 4๋ฐฉํฅ ํ์์ ์ฌ์ฉํ์ฌ์ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๊ทธ๋๋ก ๊ตฌํํ๋ฉด ์ ๋ต์ ์ฐพ์ ์ ์๋ค.
- ๋ชจ๋ ๊ตฌ๋ฆ์ด d ๋ฐฉํฅ์ผ๋ก s์นธ ๋งํผ ์ด๋ํ๋ค.
- ๊ฒฉ์๋ 1๋ฒ๊ณผ N๋ฒ ์ด, 1ํ๊ณผ N๋ฒ ์ด์ด ์ฐ๊ฒฐ๋์ด ์๋ค.
- ์ด๋ฐ ์กฐ๊ฑด์ด ๋์ค๋ฉด ๋ชจ๋๋ฌ(%) ์ฐ์ฐ์ ํ์ฉํ๋ฉด ๋๋ค.
- ๊ฐ ๊ตฌ๋ฆ์์ ๋น๊ฐ ๋ด๋ ค ๊ตฌ๋ฆ์ด ์๋ ์นธ์ ๋ฐ๊ตฌ๋์ ์ ์ฅ๋ ๋ฌผ์ ์์ด 1 ์ฆ๊ฐํ๋ค.
- ๋น๋ฅผ ๋ด๋ฆฐ ๊ตฌ๋ฆ์ ๋ชจ๋ ์ฌ๋ผ์ง๋ค.
- 2์์ ๋ฌผ์ด ์ฆ๊ฐํ ์นธ(๊ตฌ๋ฆ์ด ์์ ๋ ์นธ)์ ๋ฌผ๋ณต์ฌ๋ฒ๊ทธ ๋ง๋ฒ์ ์์ ํ๋ค. ๋ฌผ๋ณต์ฌ ๋ฒ๊ทธ ๋ง๋ฒ์ ๋๊ฐ์ 4๋ฐฉํฅ์ผ๋ก ๊ฑฐ๋ฆฌ๊ฐ 1์ธ ์นธ์ ๋ฌผ์ด ์๋ ๋ฐ๊ตฌ๋์ ์๋งํผ ๋ฌผ์ ์์ด ์ฆ๊ฐํ๋ค.
- ์ฐ๊ฒฐ๋ ๊ฒฉ์์ ๋ฌ๋ฆฌ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ๋ ํฌํจํ์ง ์๋๋ค.
- ๋ฐ๊ตฌ๋์ ์ ์ฅ๋ ๋ฌผ์ ์์ด 2 ์ด์์ธ ๋ชจ๋ ์นธ์ ๊ตฌ๋ฆ์ด ์๊ธฐ๊ณ , ๋ฌผ์ ์์ด 2 ์ค์ด๋ ๋ค. ์ด๋ ๊ตฌ๋ฆ์ด ์๊ธฐ๋ ์นธ์ 3์์ ๊ตฌ๋ฆ์ด ์ฌ๋ผ์ง ์นธ์ด ์๋์ด์ผ ํ๋ค.
์ฝ๋
sys import stdin
from copy import deepcopy
def visitable(r, c):
return 0 <= r < N and 0 <= c < N
def simulation(cur_d, cur_s):
global cloud_loc
new_cloud_loc = []
dr, dc = [a * b for a, b in zip(move_dirs[cur_d], [cur_s, cur_s])]
# case 1
for r, c in cloud_loc:
next_r, next_c = (r + dr) % N, (c + dc) % N
# case 2
board[next_r][next_c] += 1
new_cloud_loc.append((next_r, next_c))
# case 4
for r, c in new_cloud_loc:
for dr, dc in search_dirs:
next_r, next_c = r + dr, c + dc
if visitable(next_r, next_c) and board[next_r][next_c] > 0:
board[r][c] += 1
next_cloud_loc = []
# case 5
for r in range(N):
for c in range(N):
if board[r][c] >= 2 and (r, c) not in new_cloud_loc:
board[r][c] -= 2
next_cloud_loc.append((r, c))
cloud_loc = deepcopy(next_cloud_loc)
if __name__ == '__main__':
# ←, โ, ↑, โ, →, โ, ↓, โ
move_dirs = ((0, -1), (-1, -1), (-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1))
# โ, โ, โ, โ
search_dirs = [(-1, -1), (-1, 1), (1, 1), (1, -1)]
N, M = map(int, stdin.readline().split())
board = [list(map(int, stdin.readline().split())) for _ in range(N)]
cloud_loc = ((N - 1, 0), (N - 1, 1), (N - 2, 0), (N - 2, 1))
for _ in range(M):
d, s = map(int, stdin.readline().split())
simulation(d - 1, s)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 17822 ์ํ ๋๋ฆฌ๊ธฐ (0) | 2021.04.19 |
---|---|
๋ฐฑ์ค: 17837 ์๋ก์ด ๊ฒ์ 2 (0) | 2021.04.18 |
๋ฐฑ์ค: 19237 ์ด๋ฅธ ์์ด (0) | 2021.04.17 |
๋ฐฑ์ค: 17779 ๊ฒ๋ฆฌ๋ฉ๋๋ง 2 (0) | 2021.04.16 |
๋ฐฑ์ค: 19238 ์คํํธ ํ์ (0) | 2021.04.15 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ