1206. [S/W 문제해결 기본] 1일차 - View

출처 : 링크텍스트

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))

좋은 웹페이지 즐겨찾기