728x90
해당 문제는 완전탐색 문제로 해결하였습니다. 문제의 요점은 각각의 좌표의 기울기를 구하여 기울기 크기를 비교하여 문제를 해결하였습니다.
파이썬에서 나누기 연산 주의 “//” 는 정수 결과 값만 나온다. “/”연산을 활용하여 문제를 해결해야합니다.
현재의 점에서 오른쪽과 왼쪽을 모두 탐색 하였습니다.
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 |