건물의 개수 N과 N개의 건물의 높이가 주어질 때, 조망권이 확보된 세대의 수를 구하는 문제!
for test_case in range(10):
N = int(input()) # 건물의 개수 N
build = list(map(int, input().split())) # N개의 건물의 높이
i = 2 # 현재 건물
num = 0 # 조명권이 확보된 세대의 수
while i < N-2:
find = max(build[i-1], build[i-2], build[i+1], build[i+2]) # 주위에 있는 가장 큰 건물 찾기
if(build[i] > find): # 조명권 ok일시
num += (build[i] - find) # 조명권이 있는 세대를 더한다.
i += 3 # 조명권 범위 만큼은 더 이상 체크할 필요 x
else:
i += 1 # 다음 건물로 이동
print("#%d %d" %(test_case+1, num))
[문제풀이]
조망권이란 왼쪽과 오른쪽으로 창문을 열었을 때, 양쪽 모두 거리 2 이상의 공간이 확보될 때 조망권이 확보된 것이라 말한다.
즉, 양옆의 건물 4개의 높이의 최댓값보다 높은 건물이여야 조망권이 확보된것!
find = max(build[i-1], build[i-2], build[i+1], build[i+2]) # 주위에 있는 가장 큰 건물 찾기
그래서 max 함수로 가장 큰 건물을 구하고 그보다 큰 세대의 수를 더한다.
이때, 조망권이 확보된 건물일 경우 다다음건물까지는 무조건 조망권이 확보되지 않으므로 건너뛴다.
'코딩테스트 > SWEA' 카테고리의 다른 글
| [Python, 파이썬] SWEA 1954. 달팽이 숫자 (1) | 2024.10.15 |
|---|---|
| [Python, 파이썬] SWEA 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (0) | 2024.10.15 |
| [Python, 파이썬] SWEA 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (1) | 2024.10.15 |
| [Python, 파이썬] SWEA 1859. 백만 장자 프로젝트 (1) | 2024.10.15 |
| [Python, 파이썬] SWEA 2072. 홀수만 더하기 (0) | 2024.10.15 |