1. 문제
2. 접근방법
봄 -> 여름 -> 가을 -> 겨울 순으로 문제에 나온 대로 코드를 짜면 됩니다 ... 후 ...
하지만 여기에는 함정이 숨어있었슴다
바로바로바로바로바로 x, y 좌표가 반대라는 것 ...
후 ... ~!
문제를 제대로 읽지 않은 나의 탓 ..
그래서 오늘의 교훈은 **문제를 꼼꼼히 읽자 ** 입니다.
3. 파이썬 코드
N, M, K = map(int, input().split()) # N : 땅의 크기 NXN // M : 나무의 개수
eats = [[5] * N for _ in range(N)] # 기존의 양분 양
add_eats = [list(map(int, input().split())) for _ in range(N)] # 겨울에 추가되는 양분의 양
trees = [[[] for _ in range(N)] for _ in range(N)]
for _ in range(M):
x, y, z = map(int, input().split())
trees[x-1][y-1].append(z)
# K년 후 나무의 개수 ?
for idx in range(K):
# 봄, 여름
for y in range(N):
for x in range(N):
if len(trees[y][x]) > 0:
trees[y][x].sort()
isDead = False
for i in range(len(trees[y][x])):
if not isDead:
if eats[y][x] >= trees[y][x][i]:
eats[y][x] -= trees[y][x][i]
trees[y][x][i] += 1
else:
isDead = True
eats[y][x] += (trees[y][x][i] // 2)
trees[y][x][i] = 0
else:
eats[y][x] += (trees[y][x][i] // 2)
trees[y][x][i] = 0
# 가을
dir = [[1, 0], [0, 1], [-1, 0], [0, -1], [1, 1], [-1, -1], [1, -1], [-1, 1]]
for y in range(N):
for x in range(N):
if len(trees[y][x]) > 0:
trees[y][x].sort()
while trees[y][x] and trees[y][x][0] == 0:
trees[y][x].pop(0)
for i in range(len(trees[y][x])):
if trees[y][x][i] % 5 == 0:
for j in range(len(dir)):
tx = x + dir[j][0]
ty = y + dir[j][1]
if 0 <= tx < N and 0 <= ty < N:
trees[ty][tx].append(1)
# 겨울
for y in range(N):
for x in range(N):
eats[y][x] += add_eats[y][x]
answer = 0
for y in range(N):
for x in range(N):
answer += len(trees[y][x])
print(answer)
4. 마치며
x, y좌표를 제대로 캐치하지 못해 틀렸기 때문에
다음에는 요런 실수를 다시 하지 말자는 의미에서 바로 포스팅하러 달려왔습니당─=≡Σ ヘ( ´Д`)ノ
고럼 다시 달리러 바바이~!
'Algorithm > Python' 카테고리의 다른 글
[백준 2110] 공유기 설치 (0) | 2021.03.31 |
---|---|
[백준 1715] 카드 정렬하기 (0) | 2021.03.26 |
[백준 2847] 게임을 만든 동준이 (2) | 2021.03.05 |
[조합] (0) | 2021.03.04 |
[알고리즘] 순열 (0) | 2021.02.07 |