Gaegul's devlog
[SWEA] 1206. View 본문
728x90
반응형
SW Expert Academy [S/W 문제해결 기본] 시리즈
1206. View 문제
[문제]
빌딩들에 대한 정보가 주어질 때, 조망권이 확보된 세대의 수를 반환하는 프로그램을 작성하시오.
양쪽 모두 거리 2 이상의 공간이 확보될 때 조망권이 확보된다고 말한다.
아래와 같이 강변에 8채의 빌딩이 있을 때, 연두색으로 색칠된 여섯 세대에서는 좌우로 2칸 이상의 공백이 존재하므로 조망권이 확보된다. 따라서 답은 6이 된다.
[제약 사항]
가로 길이는 항상 1000이하로 주어진다. 맨 왼쪽 두 칸과 맨 오른쪽 두 칸에는 건물이 지어지지 않는다.
각 빌딩의 높이는 최대 255이다.
[입력]
입력 파일의 첫 번째 줄에는 테스트케이스의 길이가 주어진다. 그 바로 다음 줄에 테스트 케이스가 주어진다.
총 10개의 테스트케이스가 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 조망권이 확보된 세대의 수를 출력한다.
[CODE]
#1206.View
for j in range(1,11):
weight = int(input())
height = list(map(int, input().split())) # 0~255까지
cnt = 0
for i in range(2, weight-2): #2부터 n-2까지 (앞 0 0, 뒤 0 0 제외)
neighbor_most = max(height[i-2], height[i-1], height[i+1], height[i+2])
if height[i] > neighbor_most: #현재 빌딩의 높이랑의 차 더해주기
cnt += height[i] - neighbor_most
print("#{0} {1}".format(j, cnt))
⭐️ Solution
리스트의 기본적인 개념만 알고있으면 쉽게 풀 수 있는 문제라고 생각한다. 현재 인덱스 i를 제외한 양 옆 2칸의 인덱스들 i-2, i-1, i+1, i+2 들 중 최대값과의 비교를 함으로써 풀 수 있는 문제.
728x90
반응형
'Algorithm > Algorithm 풀이' 카테고리의 다른 글
[SWEA] 1213. String (0) | 2021.08.21 |
---|---|
[SWEA] 1210. Ladder1 (0) | 2021.08.21 |
[SWEA] 1209. Sum (0) | 2021.08.21 |
[SWEA] 1208. Flatten (0) | 2021.08.11 |
[SWEA] 1204. 최빈수 구하기 (0) | 2021.08.11 |
Comments