백준 1027 고층 건물

wook2·2022년 3월 9일
0

알고리즘

목록 보기
73/117

https://www.acmicpc.net/problem/1027

어느 시점에 건물이 가려지는지를 파악하는 문제였다.
건물을 연결하다 보면 기울기를 쓰면 되겠다라고 판단되는데, k번째 건물의 왼쪽과 오른쪽을 볼때 왼쪽으로는 기울기가 점점 작아져야 하고, 오른쪽으로는 기울기가 점점 커져야 한다.
아래의 그림을 보면 잘 이해가 된다.

import math
n = int(input())
arr = list(map(int,input().split()))
ans = 0
for k in range(n):
    left_acc = math.inf
    right_acc = -math.inf
    cnt = 0
    for i in range(k-1,-1,-1):
        tmp_acc = (arr[k]-arr[i]) / (k-i)
        if tmp_acc < left_acc:
            left_acc = tmp_acc
            cnt += 1
    for i in range(k+1,n):
        tmp_acc = (arr[k] - arr[i]) / (k-i)
        if tmp_acc > right_acc:
            right_acc = tmp_acc
            cnt += 1
    ans = max(ans,cnt)
print(ans)
profile
꾸준히 공부하자

0개의 댓글