본 내용은 파이썬 알고리즘 문제풀이 (코딩테스트 대비) 강의를 토대로 작성하였습니다.
# 봉우리
import sys
#sys.stdin=open("input.txt", "r")
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
cnt = 0
# 봉우리 세팅
for i in range(n):
a[i].insert(0,0)
a[i].append(0)
m = len(a[0])
a.insert(0, [0]*m)
a.append([0]*m)
# 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역
# 상 a[i-1][j] , 하 a[i+1][j]
# 좌 a[i][j-1] , 우 a[i][j+1]
for i in range(1, n+1):
for j in range(1, n+1):
if a[i][j] > a[i][j-1] and a[i][j] > a[i][j+1] and a[i][j] > a[i-1][j] and a[i][j] > a[i+1][j]:
cnt += 1
print(cnt)
상하좌우 i,j 값을 비교하여 분기 처리로 답을 구하였다.
아래는 강사님 코드이다.
dx, dy 좌표를 따로 선언해두고 all 로 비교
if 문이 훨씬 간결하고 코드가 보기좋다.
아래 코드를 외우자
import sys
#sys.stdin = open("input.txt", 'r')
dx=[-1, 0, 1, 0]
dy=[0, 1, 0, -1]
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)]
a.insert(0, [0]*n) // 맨앞에
a.append([0]*n) // 맨뒤에
// 각행의 맨앞 맨뒤에
for x in a:
x.insert(0, 0)
x.append(0)
cnt=0
for i in range(1, n+1):
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)
'Algorithm > 파이썬 알고리즘 문제풀이' 카테고리의 다른 글
[python/inflearn/section3] 스도쿠 검사 (0) | 2022.10.06 |
---|---|
[python/inflearn/section3] 곳감(모래시계) (0) | 2022.09.25 |
[python/inflearn/section3] 사과나무(다이아몬드) (1) | 2022.09.25 |
[python/inflearn/section3] 격자판 최대합 (1) | 2022.09.25 |
[python/inflearn/section3] 수들의 합 (0) | 2022.09.22 |