Algorithm Problems

[Cos Pro 2급] 4차 9번 - 위험지역

WakaraNai 2021. 4. 10. 12:53
728x90
반응형

문제

4 x 4 크기 격자 모양 지형에 위험 지역이 몇 개인지 알고 싶습니다. 위험지역이란 동, 서, 남, 북 인접한 지역이 모두 해당 지역보다 높은 지역입니다. 예를 들어 지역 높이가 아래와 같다면

빨간 영역은 인접한 지역이 모두 해당 지역보다 높은 위험지역입니다.

지역별 높이가 담긴 2차원 리스트 height가 solution 함수의 매개변수로 주어질 때, 위험 지역이 몇 개인지 return 하도록 solution 함수를 완성해주세요.

 

 

 


매개변수 설명
지역별 높이가 담긴 2차원 리스트 height가 solution 함수의 매개변수로 주어집니다.
* 각 지역의 높이는 1 이상 50 이하인 자연수입니다.

 

return 값 설명
위험지역이 몇 개인지 return 해주세요.

예시
| height                                                | return |
|--------------------------------------------------|--------|
| [[3, 6, 2, 8], [7, 3, 4, 2], [8, 6, 7, 3], [5, 3, 2, 9]] | 5   |

예시 설명
문제에 나온 예와 같습니다.

 

 

Python

height = [[3,6,2,8], [7,3,4,2],[8,6,7,3],[5,3,2,9]]


# 1 [ 9 9 9 9 9 9 ] =>리스트 통째로 추가
# 2 [ 9 _ _ _ _ 9 ] => 앞뒤로 원소 하나씩 추가
# 3 [ 9 _ _ _ _ 9 ] => 앞뒤로 원소 하나씩 추가
# 4 [ 9 _ _ _ _ 9 ] => 앞뒤로 원소 하나씩 추가
# 5 [ 9 _ _ _ _ 9 ] => 앞뒤로 원소 하나씩 추가
# 6 [ 9 9 9 9 9 9 ] =>리스트 통째로 추가

height.insert(0, [9,9,9,9,9,9]) #1
height.append([9,9,9,9,9,9]) #6
for i in range(1,5): #2,3,4,5
    height[i].insert(0,9)
    height[i].append(9)
print(height)
''' i, j를 중심으로 위아래 양옆 확인하기
           i-1, j
i,j-1       i,j        i,j+1
           i+1,j
'''
#주변보다 낮은 위험지역을 찾기
#사이에 들어있던 원소들은 인덱스가 1~4
danger = 0
for i in range(1,5):
    for j in range(1,5):
        if height[i][j] < height[i][j-1]: #왼쪽
            if height[i][j] < height[i][j+1]: #오른쪽
                if height[i][j] < height[i+1][j]: #아래쪽
                    if height[i][j] < height[i-1][j]: #위쪽
                        danger = danger + 1
print(danger)
728x90
반응형