차곡차곡

[SWEA/Python] SW Expert Academy 1206번 - View 본문

CS/Algorithm

[SWEA/Python] SW Expert Academy 1206번 - View

sohy 2022. 11. 20. 01:14

SW Expert Academy #1206 View

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

def calc(i):
    length = 255
    for dx in [-2, -1, 1, 2]:
        x = i + dx
        if 0 <= x < num:
            if building[i] > building[x]:
                length = min(length, building[i] - building[x])
            else:
                return False
    return length

for k in range(10):
    num = int(input())
    building = list(map(int, input().split()))
    cnt = 0
    for i in range(2, num-2):
        rest = calc(i)
        if rest:
            cnt += rest
    print(f'#{k+1} {cnt}')
  1. 건물 순서대로 현재 구하고 있는 건물의 양쪽 2 이하의 거리에 현재 건물보다 높은 건물이 있는지 확인한다.
  2. 높은 건물이 있을 경우 조망권이 확보되지 않는 건물로 바로 False를 리턴해준다.
  3. 높은 건물이 없을 경우 [ 현재 건물 길이 - 양쪽 2 이하의 거리에 있는 건물 중 가장 높은 건물 길이 ] 값을 리턴해준다. 해당 값이 현재 건물에서 조망권이 확보되는 세대 수이다.
  4. 리턴된 세대 수들을 합해준다.

 

Comments