백준 #2304 창고 다각형
코드
import sys
sys.stdin = open("input.txt")
input = sys.stdin.readline
n = int(input())
ls = []
for _ in range(n):
l, h = map(int, input().split())
ls.append((l, h))
ls.sort(key=lambda x : x[0])
stack = []
if n == 1:
print(ls[0][1])
else:
for i in range(n):
if i == 0 or i == 1:
stack.append(ls[i])
else:
check = True
while check:
if len(stack) >= 2:
if stack[-1][1] <= stack[-2][1] and stack[-1][1] < ls[i][1]:
stack.pop()
else:
check = False
else:
break
stack.append(ls[i])
print(ls)
print(stack)
answer = 0
for i in range(len(stack)):
answer += stack[i][1]
if i != len(stack) - 1:
answer += min(stack[i][1], stack[i + 1][1]) * (stack[i + 1][0] - stack[i][0] - 1)
print(answer)
풀이
거의 20번의 시도 끝에 풀어낸 문제이다 ㅜㅜ
실버2임에도 불구하고 많이 고생했다 흑흑
오목한 부분 체크에 대한 구현이 핵심이였다!
스택문제를 풀면 항상 느끼는데 은근 아이디어가 잘 떠오르지 않는 문제들이 많다.
화이팅!!!!
댓글남기기