본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]18111번 마인크래프트

by 현장 2021. 5. 20.

-코드

n, m, b = map(int, input().split())
block = []
time, height = 100000000000000000000, 0
for _ in range(n):
    block += list(map(int, input().split()))
for i in range(min(block), max(block) + 1):
    block_t = 0
    block_i = b
    for j in block:
        if j > i:
            block_t += (j - i) * 2
            block_i += j - i
        elif j < i:
            block_t += (i - j)
            block_i -= (i - j)
    if block_i >= 0:
        if time >= block_t:
            time = block_t
            height = i
print(time, height)

계속해보니까 걸리던 게 처음에는 입력값을 다 더한 후에 i에 n * m을 곱해서 빼주는 식으로 했으나 잘 되지 않아서 각각을 계산해주는 것으로 바꾸어서 3일간 고민해서 해봤으나 같은 시간일 때, 큰 값을  출력하는 것을 빼먹어서 친구에게 물어봐서 알게 된 후 해결을 해였습니다. 하지만 시간 초과가 생겨서 pypy로 제출하였습니다.