STUDY/Algorithm

[백준] 2628 종이자르기

sinawi95 2021. 2. 10. 11:12
728x90

www.acmicpc.net/problem/2628

import sys
input = sys.stdin.readline
#sys.stdin = open(".idea/inputs/2628_input1.txt")

width, height = map(int, input().split())
width_cut=[0]
height_cut=[0]
n = int(input())
for _ in range(n):
    direction, nth = map(int, input().split())
    if direction: # 세로
        width_cut.append(nth)
    else:   #가로
        height_cut.append(nth)
width_cut.append(width)
width_cut.sort()
height_cut.append(height)
height_cut.sort()

max_width, max_height = 0, 0
for i in range(len(width_cut)-1):
    tmp = width_cut[i+1] - width_cut[i]
    if max_width < tmp:
        max_width = tmp

for i in range(len(height_cut)-1):
    tmp = height_cut[i+1] - height_cut[i]
    if max_height < tmp:
        max_height = tmp

print(max_width * max_height)

가로와 세로를 판단해서 자르는 지점들을 각각 저장한다.

그리고 그 값들을 정렬하면 잘랐을때의 최대 길이를 구할수 있다.

가로, 세로의 최대 길이를 구해서 곱하면 해결된다.

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 11659 구간 합 구하기 4  (0) 2021.02.11
[백준] 1244 스위치 켜고 끄기  (0) 2021.02.10
[백준] 2578 빙고  (0) 2021.02.10
[백준] 2615 오목  (0) 2021.02.09
[백준] 1011 Fly me to the Alpha Centauri  (0) 2021.02.07