๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 18111๋ฒˆ_๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ

Dbswnstjd 2023. 3. 20. 16:46

๋ฌธ์ œ

https://www.acmicpc.net/problem/18111

 

18111๋ฒˆ: ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ

ํŒ€ ๋ ˆ๋“œ์‹œํ”„ํŠธ๋Š” ๋Œ€ํšŒ ์ค€๋น„๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ง€๋ฃจํ•ด์ ธ์„œ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒŒ์ž„์ธ ‘๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ’๋ฅผ ์ผฐ๋‹ค. ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋Š” 1 × 1 × 1(์„ธ๋กœ, ๊ฐ€๋กœ, ๋†’์ด) ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ 3์ฐจ์› ์„ธ๊ณ„์—์„œ ์ž์œ ๋กญ๊ฒŒ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 18111๋ฒˆ ๋ฌธ์ œ - ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ
import sys
input = sys.stdin.readline
n, m, b = map(int, input().split()) # ์„ธ๋กœ, ๊ฐ€๋กœ, ๋ธ”๋ก ๊ฐœ์ˆ˜
graph = []
graph.append(list(map(int, input().split())) for _ in range(m))

answer = int(1e9)
g_level = 0

for i in range(257):
    use_block = 0
    take_block = 0
    for x in range(n):
        for y in range(m):
            if graph[x][y] > i:
                take_block += graph[x][y] - i
            else:
                use_block += i - graph[x][y]
    
    if use_block > take_block + b:
        continue

    count = take_block * 2 + use_block

    if count <= answer:
        answer = count
        g_level = i

print(answer, g_level)