Check Point !
( 해당사항 ✓체크 )
막힘 없이 수월하게 풀린 문제인가?
1시간이내로 풀렸던 문제인가?
1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
시간을 써도 도무지 풀 수 없는 문제인가? ✅ (외웠다.)
솔루션을 찾아봤는가? ✅
난이도 체감
최상
상
중 ✅ (실2)
하
<이해도>
완벽히 이해
다소 헷갈리는 부분들이 있음
이해 못함 ✅
<덧붙일 말>
브루트 포스로 해결하는데 이해를 못했다. 나중에 해당 알고리즘을 이해하고 다시 풀어보자.
https://www.acmicpc.net/problem/18111
import sys
input = sys.stdin.readline
n,m,b = map(int,input().split())
board = [list(map(int, input().split())) for _ in range(n)]
INF = int(1e9)
def check(board,lv,b):
sc = 0
c = 0
for i in range(n):
for j in range(m):
z = board[i][j] - lv
if z > 0: # 블록 채움
b += z
sc += 2 * z
else: # 블록 파기
c += -z
if b < c:
return INF
return sc + c
msc = INF
mlv = 0
for lv in range(256, -1,-1):
sc = check(board, lv, b)
if msc > sc:
msc = sc
mlv = lv
print(msc, mlv)
막상 문제를 그냥 풀이법을 보고 외워버렸는데 조금만 응용하더라도 다른 문제를 해결하지 못할 것이다.
이해못한점은 c변수 사용을해서 sc와 c를 구분한 이유
풀이 전개방식이 아직 정확히 이해가안간다.