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

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh&categoryId=AV134DPqAA8CFAYh&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

간단한 구현 문제였다.
어렵게 생각할 필요 없이 가로 길이가 최대 1000이기 때문에 하나씩 다 확인한다고 하더라고 연산시간이 얼마 걸리지 않겠다라고 생각했다.

각 건물마다 좌우 2칸씩 확인하여서, 선택한 빌딩보다 큰 건물이 있다면 조망권이 없는 것이고, 해당 건물이 제일 크다면 왼쪽과 오른쪽 중에 제일 큰 빌딩의 길이를 빼주어 더하면 된다.

for _ in range(10):
    n = int(input())
    arr = list(map(int,input().split()))
    ans = 0
    for i in range(2,n-2):
        a = arr[i-2]
        b = arr[i-1]
        c = arr[i+1]
        d = arr[i+2]
        if max(a,b,c,d) >= arr[i]:
            continue
        l = max(a,b)
        r = max(c,d)
        ans += min(arr[i]-l,arr[i]-r)
    print(f"#{_+1} {ans}")

좋은 웹페이지 즐겨찾기