문제의 저작권은 SW Expert Academy에 있습니다.
1210 Ladder 1
난이도 d4여서 쫄았는데 생각보다 쉬웠다.
처음으로 2를 가진 엔드포인트를 찾았고,
디폴트 값으로 col -= 1
을 통해 위로 한 칸 올라가는데 맨 아랫줄 바로 옆에 1이 있는 경우를 예외처리 하기위함이다.
그리고 while문을 통해 col -= 1
으로 맨 위에 올라갈 때 까지 계속 좌 우를 살피면서 좌 우에 값이 1이라면 턴.
턴 이후에 while문을 통해서 1이 나오지 않을 때까지 계속 돈다.
그리고 나와서 바로 또 한 칸 위로 올라간다.
row의 양 옆 엣지값을 검사해주어야한다.
import sys
sys.stdin = open("input (2).txt")
T = 10
N = 100
def find_end_point(matrix):
for i in range(N):
if matrix[N-1][i] == 2:
return i
for tc in range(1, T+1):
case = int(input())
matrix = []
for i in range(N):
matrix.append(list(map(int, input().split())))
number = 0
end_point = find_end_point(matrix)
col = N-1
row = end_point
while col != 0:
if col == N-1: # 99
col -= 1
# left row > 1
if row > 1 and matrix[col][row-1]:
while row > 1 and matrix[col][row-1]:
row = row-1
# right row < 99
elif row < N-1 and matrix[col][row+1]:
while row < N-1 and matrix[col][row+1]:
row = row+1
col -= 1
print("#{} {}".format(tc, row))