Python/구현 BOJ-14890 경사로

[Python/구현] BOJ-14890 경사로

📌문제링크 풀이참고

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

def check_route(N,L,route):
    ramp =[0]*N
    for i in range(N-1):
        if abs(route[i] - route[i+1]) >1 :
            return False
        else : #높이차이가 1이거나 0인 경우
            if route[i] - route[i+1] == 1 : #높은 칸에서 낮은 칸
                if i+1+L > N : return False
                check = route[i+1]
                for j in range(i+1,i+1+L):
                    if ramp[j] or route[j] != check : return False
                    ramp[j] = 1
            elif route[i] - route[i+1] == -1 :
                if i-L < -1 : return False
                check = route[i]
                for j in range(i,i-L,-1):
                    if ramp[j] or route[j]!= check : return False
                    ramp[j] =1
    return True

N, L = map(int, input().split())
board = [list(map(int,input().split())) for _ in range(N)]
cnt =0

for r in board :
    if check_route(N,L,r) : cnt+=1

T_board= [list(x) for x in zip(*board)]
for r in T_board :
    if check_route(N,L,r) : cnt+=1

print(cnt)

    

회고

2시간 동안 붙잡고 있다가 결국 답을 봤다.. 모르면 빨리 해결하고 넘어가자.