237. 경사로

아현·2021년 8월 6일
0

Algorithm

목록 보기
247/400
post-thumbnail

백준





1. Python



import sys
input = sys.stdin.readline

n, l = map(int, input().split())
data = [list(map(int, input().split())) for _ in range(n)]
answer = 0

def ramp(i, c):
    global answer
    cnt = 1
    for j in range(0, n - 1): 
        d = data[i][j+1] - data[i][j] if c else data[j+1][i] - data[j][i] #현재 칸의 높이 와 다음 칸의 높이
        if d == 0: #높이가 같은 경우
            cnt += 1
        elif d == 1 and cnt >= l: #올라가는 경사로
            cnt = 1 #경사로를 놓을 수 있기에 초기화
        elif d == -1 and cnt >= 0: #내려가는 경사로
            cnt = -l + 1 #카운트가 음수라면 내려가는 경사로 만드는 중
        else:
            return
    if cnt >= 0: #경사로의 길이와 비교
        answer += 1


for i in range(n):
    ramp(i, 1)
    ramp(i, 0)
print(answer)



profile
Studying Computer Science

0개의 댓글