728x90
Key Point
1. 브루트 포스 알고리즘이다.
2. 2차원 배열을 사용할 것 처럼 보이지만 1차원 배열로 간단히 풀어도 좋다.
3. 블록 height의 기준 점을 잡을 때 arr의 원소 값 전부의 합과 block의 수를 합하여 arr index로 나눠주어 int를 씌워준다.( 소수점을 버리는 의미)
만약 해당 연산이 3.666.. 이렇게 나왔을 경우 기준을 4를 택하게 되면 블록이 모자라기 때문에 소수점은 버려주어야 한다.
즉 3을 기준점으로 잡아야함!
import sys
input = sys.stdin.readline
mini = sys.maxsize
tem_s = -1
N, M, B = map(int,input().split())
arr = []
for i in range(N): #세로
arr += list(map(int,input().split()))
maxi = int((sum(arr)+B)/(N*M)) #소수점 내림
total = 0
for s in range(maxi+1):
for h in arr:
if h > s:
total += 2*(h - s)
elif h < s:
total += (s - h)
if mini >= total:
mini = total
tem_s = s
total = 0
print(mini, tem_s)
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 1764번 python 풀이 (0) | 2022.11.29 |
---|---|
[백준/BOJ] - 18111번 python 풀이 (0) | 2022.11.29 |
[백준/BOJ] - 2805번 python 풀이 - 이분탐색(binary search) (0) | 2022.11.27 |
[백준/BOJ] - 1654번 python 풀이 - 이분탐색(binary search) (0) | 2022.11.27 |
[백준/BOJ] - 1966번 python 풀이 - deque, list 활용 (2) | 2022.11.25 |