흙금이네 블로그

[BOJ] 14890 - 경사로 (Python) 본문

알고리즘

[BOJ] 14890 - 경사로 (Python)

흙금 2023. 3. 20. 13:39

 

 

아이디어

 

칸의 높이 변화에 따라 분기 처리하여 지나갈 수 있는 길의 개수를 구한다.

 

 

풀이

 

import sys

input = sys.stdin.readline

def solution():
    N, L = map(int, input().split())
    board = [tuple(map(int, input().split())) for _ in range(N)]
    res = 0
    for i in range(N):
        cnt = 1
        for j in range(N-1):
            d = board[i][j+1]-board[i][j]
            if d == 0:
                cnt += 1
            elif d == 1:
                if cnt < L:
                    break
                cnt = 1
            elif d == -1:
                if cnt < 0:
                    break
                cnt = -(L-1)
            else:
                break
        else:
            if cnt >= 0:
                res += 1
    for j in range(N):
        cnt = 1
        for i in range(N-1):
            d = board[i+1][j]-board[i][j]
            if d == 0:
                cnt += 1
            elif d == 1:
                if cnt < L:
                    break
                cnt = 1
            elif d == -1:
                if cnt < 0:
                    break
                cnt = -(L-1)
            else:
                break
        else:
            if cnt >= 0:
                res += 1
    print(res)

solution()

 

Comments