https://www.acmicpc.net/problem/14890
import sys
input = sys.stdin.readline
N, L = map(int, input().split())
lines = [list(map(int, input().split())) for _ in range(N)]
answer = 0
def is_ok(line):
visited = [False for _ in range(N)]
for i in range(N-1):
if line[i] == line[i+1]:
continue
if abs(line[i] - line[i+1]) >= 2:
return False
if line[i] > line[i+1]:
for j in range(1, L+1):
if i + j >= N or visited[i + j] or line[i+1] != line[i + j]:
return False
visited[i + j] = True
if line[i] < line[i+1]:
for j in range(L):
if i - j < 0 or visited[i - j] or line[i] != line[i - j]:
return False
visited[i - j] = True
return True
# 가로 탐색
for i in range(N):
if is_ok(lines[i]):
answer += 1
# 세로 탐색
for j in range(N):
if is_ok([lines[i][j] for i in range(N)]):
answer += 1
print(answer)
'PS > 백준' 카테고리의 다른 글
[백준] 1913번 달팽이 (python 정답 코드) (0) | 2024.10.10 |
---|---|
[백준] 21610번 마법사 상어와 비바라기 (python 정답 코드) (0) | 2024.10.09 |
[백준] 19236번 청소년 상어 (python 정답 코드) (0) | 2024.10.08 |
[백준] 14891번 톱니바퀴 (python) (2) | 2024.09.06 |
[백준] 3190번 뱀 (python) (0) | 2024.09.05 |