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

전승재·2023년 8월 16일
0

알고리즘

목록 보기
22/88

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

문제 이해

아래와 같은 빌딩들이 있을 때 조망권이 확보되는 집의 개수를 구하는 문제이다.
조망권은 양옆 2칸내에 나의 위치보다 높은 위치가 없을 경우에 확보된다.
A는 2칸 오른쪽의 집 때문에 조망권을 확보하지 못한 상태이다.

문제 접근

되게 간단한 문제였다.
주변 2칸내에 가장 높은 값이 현재 나의 위치보다 낮을경우 두 값 사이의 차를 result에 더해주면 됐다.
문제에서 입력도 처음 2칸을 0,0 마지막 두칸을 0,0으로 넣어주었기 때문에 더 쉬웠다!

문제 풀이

아래 코드와 같이 주변 두 값에서 가장 높은값을 구하고 현재 나의 값과 비교하여 result에 더해주었다.

left_best = max(building[i-1],building[i-2])
right_best = max(building[i+1],building[i+2])
best = max(left_best, right_best)
if building[i]>best:
	result += building[i]-best

제출 코드

for test_case in range(1, 11):
	N = int(input())
	building = list(map(int, input().split()))
	result = 0
	for i in range(2,N-2):
		left_best = max(building[i-1],building[i-2])
		right_best = max(building[i+1],building[i+2])
		best = max(left_best, right_best)
		if building[i]>best:
			result += building[i]-best
	print(f'#{test_case} {result}')

0개의 댓글