Gaegul's devlog

[SWEA] 1206. View 본문

Algorithm/Algorithm 풀이

[SWEA] 1206. View

부지런깨꾹이 2021. 8. 11. 12:31
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))

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh&categoryId=AV134DPqAA8CFAYh&categoryType=CODE&problemTitle=s%2Fw&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=5

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

⭐️ 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