SWEA 1206. [S/W 문제해결 기본] 1일차 - View 문제 바로가기
아래와 같은 빌딩들이 있을 때 조망권이 확보되는 집의 개수를 구하는 문제이다.
조망권은 양옆 2칸내에 나의 위치보다 높은 위치가 없을 경우에 확보된다.
A는 2칸 오른쪽의 집 때문에 조망권을 확보하지 못한 상태이다.
되게 간단한 문제였다.
주변 2칸내에 가장 높은 값이 현재 나의 위치보다 낮을경우 두 값 사이의 차를 result에 더해주면 됐다.
문제에서 입력도 처음 2칸을 0,0 마지막 두칸을 0,0으로 넣어주었기 때문에 더 쉬웠다!
아래 코드와 같이 주변 두 값에서 가장 높은값을 구하고 현재 나의 값과 비교하여 result에 더해주었다.
left_best = max(building[i-1],building[i-2])
right_best = max(building[i+1],building[i+2])
best = max(left_best, right_best)
if building[i]>best:
result += building[i]-best
for test_case in range(1, 11):
N = int(input())
building = list(map(int, input().split()))
result = 0
for i in range(2,N-2):
left_best = max(building[i-1],building[i-2])
right_best = max(building[i+1],building[i+2])
best = max(left_best, right_best)
if building[i]>best:
result += building[i]-best
print(f'#{test_case} {result}')