Baekjoon/IM Level
[백준] 2628 종이자르기 (실버5)
hellosonic
2023. 3. 10. 20:39
문제요약
나의 코드 및 설명
- 가로, 세로 범위가 최대 100cm라고 했고, 케이스가 많을 것 같지 않아서
가로로 잘랐을 때 쪼개진 세로 눈금들의 길이와, 세로로 잘랐을 때 쪼개진 가로 눈금들의 길이를 곱해서 최대값을 찾았다. - n,m : 가로와 세로를 입력한다.
- cut : 자르는 총 횟수를 입력한다.
- x_points, y_points : 잘랐을 때 나오는 사각형의 가로축의 꼭지점과 세로축의 꼭지점을 저장할 수 있는 리스트를 선언한다.
- x_width, y_height : 잘랐을 때 나오는 사각형의 가로 길이와 세로 길이를 저장할 수 있는 리스트를 선언한다.
n, m = map(int, input().split())
cut = int(input())
x_points = [0]
y_points = [0]
x_points.append(n)
y_points.append(m)
for i in range(cut):
direction, point = map(int, input().split())
if direction == 0:
y_points.append(point)
elif direction == 1:
x_points.append(point)
x_points.sort()
y_points.sort()
x_width = []
y_height = []
for i in range(len(x_points)-1):
if i == len(x_points) - 1:
continue
x_width.append(x_points[i+1]-x_points[i])
for j in range(len(y_points)-1):
if j == len(y_points) - 1:
continue
y_height.append(y_points[j+1]-y_points[j])
area = 0
fin = 0
for x in x_width:
for y in y_height:
area = x*y
if area >= fin:
fin = area
else:
continue
print(fin)
피드백
처음 문제를 보았을 때 헤맸었는데, 다시 풀어보니 어렵지 않게 풀 수 있었다.
가로의 최대 길이와 세로의 최대 길이가 100cm 인 것을 보고 케이스가 많지 않다고 생각했고, 잘라진 사각형의 가로 길이와 세로 길이를 일일이 구해도 시간초과가 뜨지 않을 것 같다고 생각해서 위와 같이 풀었는데 맞았다.