[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}") // 출력한다.