1206.[S/Wトラブルシューティングネイティブ]1日目-ビュー


ソース:リンクテキスト

1.解法


ビルの眺望権を確保するためには、自分の位置の前後で2つのビルより高くなければならない.そのため、まず周囲の建物の中で最も高い建物の高さを求めて、それから自分の建物の高さから減算して、自分の建物の中で眺望権を持つ世代を求めることができます.

2 max()関数の使用

for test_case in range(1, 11):
    width = int(input())
    building = list(map(int, input().split()))
    cnt = 0
    for i in range(2, width - 2):
        max_building = max(building[i - 2], building[i - 1], building[i + 1], building[i + 2])
        if building[i] > max_building:
            cnt += (building[i] - max_building)
    print('#{0} {1}'.format(test_case, cnt))

3.for構文を使用して直接最大値を求める

for test_case in range(1, 11):
    width = int(input())
    building = list(map(int, input().split()))
    cnt = 0
    for i in range(2, width - 2):
        max_building = building[i - 2]
        for j in range(i - 1, i + 3):
            if j == i:
                continue
            if max_building < building[j]:
                max_building = building[j]
        if building[i] > max_building:
            cnt += (building[i] - max_building)
    print('#{0} {1}'.format(test_case, cnt))