본문 바로가기
백준 풀이

[백준/BOJ] - 18111번 python 풀이 - 브루트포스 알고리즘

by 반오십 코린이 2022. 11. 29.
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