데브로그

프로그래밍 팁 그리고 프로그램 사용 방법 등을 공유 합니다.

AlgorithmPython

[SWEA] 1206. [S/W 문제해결 기본] 1일차 – View (Python)

문제:

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh

.

조망권과 관련된 문제입니다.

아파트가 1000개 이하의 동이 일렬로 있다고 가정하고 처음 두개동과 마지막 두개동은 없다고 가정합니다. 총 996동이 됩니다.

앞 뒤로 두개 동의 높이가 낮으면 조망권이 있다고 가정하고

앞 뒤로 두개 동의 높이가 같거나 높을 경우 조망권이 없다고 가정합니다.

.

T = 10
for test_case in range(1, T + 1):
    n = int(input()) // 대지면적
    count = 0 // 조망권 확보된 세대 수
    buildings = list(map(int, input().split())) // 해당 테스트 케이스의 아파트 층수 정보
    lst = [-2, -1, 1, 2] // 현재 아파트의 앞 뒤 각각 두개동의 위치 리스트
    for i in range(2, n-2): // 대지면적에서 아파트가 지어진 면적  
        side_lst = [] 앞뒤 2개동의 높이가 저장될 리스트
        for j in lst:
            side_lst.append(buildings[i+j]) // 앞뒤 2개동의 높이를 저장한다.
        if max(side_lst) >= buildings[i]: // 현재동과 앞뒤 2개동의 높이를 비교해서 같거나 높은 아파트가 있으면 다음 동으로 넘어간다.
            continue
        else:
            count += buildings[i] - max(side_lst) // 현재동보다 높은 아파트가 없으면 그 중 가장 높은 아파트의 층수를 현재 아파트 층수에서 빼고 그 값을 조망권 확보한 세대수에 추가한다.
    print(f"#{test_case} {count}") // 출력한다.

Leave a Reply