宥利を奉ずる.


ナビゲーション&シミュレーション(文字列、1 Dおよび2 Dリストナビゲーション)


に質問


宥利を奉ずる。


地図情報にはN*Nメッシュが付与されます.各メッシュには、その領域の高さが含まれています.各グリッドボードの数字のうち、上下左右の数字より大きいのがピーク領域です.いくつのピーク地域があるかを知るプログラムを作成してください.
メッシュのエッジをゼロに初期化するとします.
n=5で、メッシュボードの数字が以下の場合、ピークの個数は10となります.

■説明の入力
最初の行は自然数Nを与える.(1<=N<=50)
2行目から、行ごとにN個の自然数があります.各自然数は100を超えない.
■出力説明
ピークの個数をプリントアウトしてください.
■入力例1
5
5 3 7 2 3
3 7 1 6 1
7 2 5 3 4
4 3 6 4 1
8 7 3 5 2
■出力例1
10

コード#コード#💻

import sys
# sys.stdin=open("input.txt", "rt")  # read text
'''
탐색
x : 행
y : 열
'''
dx = [-1, 0, 1, 0]  # 12시, 3시, 6시, 9시 방향
dy = [0, 1, 0, -1]  # 12시, 3시, 6시, 9시 방향
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]   # 2중 리스트

a.insert(0, [0]*n)  # 맨 위 행에 0으로 초기화된 행 삽입
a.append([0] * n)   # 맨 아래 행에 0으로 초기화된 행 삽입

for x in a:
    x.insert(0, 0)  # 각 행 왼쪽에 0 추가
    x.append(0)     # 각 행 오른쪽에 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)
リファレンス
  • インフラストラクチャ:Pythonアルゴリズム回答