문제
예제
입력 | 출력 |
100 0 0 225 214 82 73 241 233 179 219 135 62 36 13 6 71 179 77 67 139 31 90 9 37 93 203 150 69 19 137 28 174 32 80 64 54 18 0 158 73 173 20 0 102 107 48 50 161 246 145 225 31 0 153 185 157 44 126 153 233 0 201 83 103 191 0 45 0 131 87 97 105 97 209 157 22 0 29 132 74 2 232 44 203 0 51 0 244 212 212 89 53 50 244 207 144 72 143 0 0 ... (생략) |
#1 691 #2 9092 #3 8998 #4 9597 #5 8757 #6 10008 #7 10194 #8 10188 #9 9940 #10 8684 |
풀이
N개의 건물 중 i번째 건물의 양쪽 건물 두 개씩 높이를 확인하면서 조망권이 확보되었는 지 확인한다.
즉, i-2, i-1, i+1, i+2 번째 건물의 최대 높이가 i번째 건물보다 낮으면
i번째 건물의 몇 개 층은 조망이 확보된 것이므로
해당 건물의 조망권이 확보된 층의 개수는 arr[i] - max(arr[i-2], arr[i-1], arr[i+1], arr[i+2]) 이다.
'''
좌우로 2칸 이상 공백이 존재해야 조망권이 확보됨
'''
#import sys
#sys.stdin = open("./input.txt", "r")
for num in range(10):
ans = 0
N = int(input())
arr = list(map(int, input().split()))
for i in range(2, len(arr)-2):
tmp = max(arr[i-2], arr[i-1], arr[i+1], arr[i+2])
if arr[i]- tmp > 0:
ans += arr[i]- tmp
print("#{} {}".format(num+1, ans))
'코테 공부 > 그 외 사이트' 카테고리의 다른 글
[Python] 1.구름 숫자 (0) | 2022.11.28 |
---|---|
[Python/백트래킹] 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (0) | 2022.11.28 |
[Python/BFS] 3.구름이의 여행 2 (0) | 2022.11.22 |
[Python/DFS] 2.퍼져나가는 소문 / 그래프 탐색 (0) | 2022.11.21 |
[Python] 1.UXUI 디자이너/ lambda, sorted (0) | 2022.11.21 |