본문 바로가기

알고리즘/백준

[백준] 1027번 : 고층건물

728x90

1027번: 고층 건물

해당 문제는 완전탐색 문제로 해결하였습니다. 문제의 요점은 각각의 좌표의 기울기를 구하여 기울기 크기를 비교하여 문제를 해결하였습니다.

파이썬에서 나누기 연산 주의 “//” 는 정수 결과 값만 나온다. “/”연산을 활용하여 문제를 해결해야합니다.

현재의 점에서 오른쪽과 왼쪽을 모두 탐색 하였습니다.

import sys

si = sys.stdin.readline

N = int(si())
arr = list(map(int, si().split()))

ans = 0
for i in range(N): # 가능한 모든 빌딩을 가본다.

    # 오른쪽으로가본다.
    rbuilding = []
    start = i+1
    while N > start:
        if rbuilding:
            incline = rbuilding[-1]
            dy, dx = arr[start] - arr[i], start - i
            if dy / dx > incline:
                rbuilding.append(dy / dx)
        else:
            dy, dx = arr[start] - arr[i], start - i
            rbuilding.append(dy / dx)

        start += 1

    # 왼쪽으로 가본다.
    lbuilding = []
    start = i-1
    while start > -1:
        if lbuilding:
            incline = lbuilding[-1]
            dy, dx = arr[start] - arr[i], start - i
            if dy / dx < incline:
                lbuilding.append(dy / dx)
        else:
            dy, dx = arr[start] - arr[i], start - i
            lbuilding.append(dy / dx)

        start -= 1
    #print(i, len(rbuilding), len(lbuilding))
    ans = max(ans, len(rbuilding) + len(lbuilding))

print(ans)
728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1005번 - ACM Craft  (0) 2023.10.21
[백준] 1018번 : 채스판 다시 칠하기  (0) 2023.10.20
[백준] 17141번 : 연구소 2  (0) 2023.10.20
[백준] 10686번 - 최소값  (0) 2023.10.20
[백준] 17070번 : 파이프 옮기기1  (0) 2023.10.20