본문 바로가기

코딩테스트 with PYTHON

[python] 코팅테스트 대비 - 2차원 배열 상하좌우 비교

문제)

 

 

정답 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys
#sys.stdin = open("input.txt", 'r')
dx=[-1010]#상하좌우 탐색을 위함.
dy=[010-1]#상하좌우 탐색을 위함.
 
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)]
 
 
######0으로 배열 둘러 싸기#######
a.insert(0, [0]*n)#최상단에 0배열 추가
a.append([0]*n)#최하단에 0배열 추가
for x in a:#각 행마다 맨 앞, 맨 뒤에 0추가
    x.insert(00)
    x.append(0)
###############################
 
cnt=0#정답
for i in range(1, n+1):#0으로 둘러싼 부분 제외하고 반복
    for j in range(1, n+1):
        if all(a[i][j]>a[i+dx[k]][j+dy[k]] for k in range(4)):#상하좌우 값보다 모두 크다면,
            cnt+=1#봉우리 갯수 추가
print(cnt)
cs