宥利を奉ずる.


作成日:2022年1月13日午後6:53

インプリメンテーションコード

# 봉우리
import sys
sys.stdin = open("input.txt", "rt")
n = int(input())
m = [list(map(int, input().split())) for _ in range(n)]
for x in m:
    x.append(0)
    x.insert(0,0)
m.append([0]*(n+2))
m.insert(0, [0]*(n+2))

res = 0

for i in range(1, n+1):
    for j in range(1, n+1):
        mine = m[i][j]
        if m[i-1][j] < mine and m[i][j-1] < mine and m[i][j+1] < mine and m[i+1][j] < mine:
            res += 1
print(res)

模範解答

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)

差異

  • 私が実装したコードでは,上下左右の値を確認するために長いif文を記述したが,模範解答ではall()を用いて括弧中のすべての式が本当かどうかを調べるために簡単に1つのコードを記述した.