문제 설명
•
주어진 빌딩들에 대해 조망권이 확보된 세대의 수를 구하는 문제
◦
각 세대는 왼쪽과 오른쪽으로 창문을 열었을 때, 양쪽 모두 2칸 이상의 공백이 있어야 조망권이 확보된 것으로 간주
◦
맨 왼쪽과 오른쪽 두 칸은 항상 높이가 0으로 설정
예제 입력/출력
•
입력1
10
0 0 254 185 76 227 84 175 0 0
10
0 0 251 199 176 27 184 75 0 0
11
0 0 118 90 243 178 99 100 200 0 0
...
Plain Text
복사
•
출력1
#1 111
#2 60
#3 165
...
Plain Text
복사
제약 조건
•
•
◦
맨 왼쪽 2칸과 맨 오른쪽 2칸은 높이가 0
문제 풀이
•
브루트 포스 -
◦
문제에서 시키는 대로 구현하면 되는 단순 구현 문제에 해당
◦
각 세대에 대해, 양옆으로 2칸씩 살펴보고, 그 구간에서 가장 높은 빌딩의 높이를 구한다.
◦
만약 현재 빌딩의 높이가 양옆 가장 높은 빌딩보다 높다면, 그 세대는 조망권이 확보된 세대로 간주하고 그 차이를 누적하여 결과를 구한다.
풀이 코드
for tc in range(1, 11):
N = int(input())
buildings = list(map(int, input().split()))
ans = 0
for i in range(2, N-1):
cnt = buildings[i] - max(buildings[i-2:i] + buildings[i+1:i+3])
ans += cnt if cnt > 0 else 0
print(f"#{tc} {ans}")
Python
복사