백준(BOJ)

[Python/파이썬] - 백준(BOJ) 1027번 : 고층 건물

phanre 2022. 5. 31. 10:24

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

 

1027번: 고층 건물

세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)

www.acmicpc.net

 

두 건물의 기울기를 이용해 두 건물 사이 선분에 건물이 있는지 확인하면 된다.

 

def watch(index):
    answer = 0
    height = build[index]
    for i in range(n):
        dx = i - index
        dy = height - build[i]
        if dx != 0:
            d = dy/abs(dx)
            k = 1
            if dx > 0:
                k = -1
            b = 1
            for j in range(i+k, index, k):
                if build[j] >= build[i] + d*abs(j-i):
                    b = 0
                    break
            if b:
                answer += 1
    return answer

n = int(input())
build = list(map(int,input().split()))
answer = 0
for i in range(n):
    answer = max(answer, watch(i))
print(answer)