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

[백준/파이썬] 2628번 종이자르기

by 현장 2022. 5. 28.

-Code

n, m = map(int, input().split())
t = int(input())
x = [0, n]
y = [0, m]
result = 0

for i in range(t):
    cut, pos = map(int, input().split())
    if cut == 0:
        y.append(pos)
    else:
        x.append(pos)
x.sort()
y.sort()

for i in range(1, len(x)):
    for j in range(1, len(y)):
        w = x[i] - x[i - 1]
        h = y[j] - y[j - 1]
        result = max(result, w * h)
print(result)

sort까지는 어떻게든 썼으나 결과를 구하는 방법에서 가장 큰 값일 때와 작은 값일 때만 구해서 틀려서 이유를 찾아보니 모든 부분의 값을 구해야 하며 해당 과정을 피보나치처럼 이전 값과 빼가면서 해결하는 방법을 알게 되어 해결을 했습니다.