problem
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
Solution
1. 5개의 값들을 비교하여 가운데 있는 값이 주변 값들보다 크면 조망권이 확보되었다고 할 수 있다.
2. 조망권이 확보된 개수를 세기 위해 최댓값과 그다음 최댓값의 차를 더해준다.
- 가장 큰 값과 그 다음으로 큰 값의 차는 조망권이 확보된 층들을 의미한다.
3. 어차피 양 끝의 2칸은 무조건 0이니까 탐색은 2번째부터 N-2까지만 하면 된다.
Code
for test_case in range(1, 11):
N = int(input())
building_list = list(map(int, input().split()))
count = 0
# 5개의 중 가운데가 가장 큰 경우를 뽑아 가장 큰 값과 차순위의 차를 더해감
for i in range(2, N-2):
arr = building_list[i-2:i+3]
if arr[2] == max(arr):
count += arr[2] - max(arr[:2] + arr[3:])
print(f'#{test_case} {count}')
<부족한 부분들을 댓글로 남겨주시면 저에게 도움이 됩니다!>
<그림 출처: SWEA View>
반응형
'Algorithm > SW Expert Academy Review' 카테고리의 다른 글
4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스 (0) | 2023.03.05 |
---|---|
16180. 4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드 (0) | 2023.03.05 |
16504. Gravity (0) | 2023.03.05 |
LIST1. 1일차 - min max (0) | 2023.02.12 |
LIST1. 1일차 - 구간합 (0) | 2023.02.12 |