JiSoo's Devlog
[백준 / 파이썬] 18111번 마인크래프트 본문
n, m, B = map(int, input().split())
g = [list(map(int, input().split())) for i in range(n)]
mt = 9999999999
h = 0
for i in range(257):
bottom = 0
top = 0
for j in range(n): #가로
for k in range(m): #세로
if g[j][k] >= i: #블럭이 현재 높이보다 크면
top += g[j][k] - i
else:
bottom += i - g[j][k]
if bottom > top + B:
continue
t = bottom + (top*2)
if t <= mt:
mt = t
h = i
print(mt, h)
좌표의 가장 위의 블록 제거해 인벤토리에 넣기 - 2초
인벤토리에서 블록 하나 꺼내서 올려놓기 - 1초
인벤토리에는 B개의 블록
만들 수 있는 층수는 0~256층
i층을 만들기 위한 땅을 for문으로 돌면서 i층으로 만들어주기 위한 작업
만약 땅[x][y] >= i라면 흙을 파서 높이 맞춰주고 땅을 판 횟수를 top에 저장
땅[x][y] < i라면 흙을 쌓아 높이 맞춰주고 쌓은 횟수 bottom에 저장
가지고 있는 흙인 top+B보다 필요한 흙 bottom이 많다면 평평한 땅을 만들 수 없다
pypy3으로 제출해야 시간 초과가 뜨지 않는다
728x90
'코테준비' 카테고리의 다른 글
[백준 / 파이썬] 1463번 1로 만들기 (0) | 2024.01.15 |
---|---|
[백준 / 파이썬] 11047번 동전 0 (1) | 2024.01.15 |
[백준 / 파이썬] 15829번 Hashing (0) | 2024.01.14 |
[백준 / 파이썬] 1654번 랜선 자르기 (1) | 2024.01.14 |
[백준 / 파이썬] 1966번 프린터 큐 (1) | 2024.01.14 |