알고리즘/SWEA

[SWEA D3] 1206. [S/W 문제해결 기본] 1일차 - View, Python 풀이

KeyDi 2022. 12. 20. 20:08
728x90
 

SW Expert Academy

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

swexpertacademy.com

#건물의 좌,우 높이 비교
#해당 건물당, 2이상 널널하면 조망권 count

for tc in range(1, 11):
    N = int(input()) #건물의 갯수
    heights = list(map(int, input().split())) #건물들 높이
    answer = 0 #조망권 확보된 세대 카운트

    #모든 건물 경우에 대해서,
    for i in range(2, N-2):
        left = 0
        right =0

        #해당 빌딩 왼쪽 두칸 비교 (해당 빌딩보다 작은만큼 조망권 확보)
        #왼쪽의 건물 두채중에 큰거 고름 -> 해당 빌딩에서 값 빼기 -> 왼쪽 조망권 확보된 세대
        if heights[i] >= heights[i-1] >= heights[i-2]:
            left = heights[i] - heights[i-1]

        if heights[i] >= heights[i-2] > heights[i-1]:
            left = heights[i] - heights[i-2]

        #오른쪽 두칸 비교
        #오른쪽 건물 두채중에 큰거 고름 -> 해당 빌딩에서 값 빼기 -> 오른쪽 조망권 확보된 세대
        if heights[i] >= heights[i + 1] >= heights[i + 2]:
            right = heights[i] - heights[i + 1]

        if heights[i] >= heights[i + 2] > heights[i + 1]:
            right = heights[i] - heights[i + 2]

        #왼쪽, 오른쪽 조망권 확보된 세대중에 더 작은거 고르기
        if left < right:
            answer += left
        else:
            answer += right

    print(f"#{tc}", answer)

 

728x90
반응형