https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh

정답 코드

for _ in range(10):
    n = int(input())
    ladder = [list(map(int, input().split())) for _ in range(100)]
    x = 99
    y = 0
    line = []
    for j in range(100):
        if ladder[99][j] != 0:
            line.append(j)
        if ladder[99][j] == 2:
            y = j #도착좌표
    while x != 0:
        if y-1 >= 0 and ladder[x][y-1] == 1: #left
            tmp = line.index(y)
            y = line[tmp-1]
            x -= 1
        elif y+1 < 100 and ladder[x][y+1] == 1: #right
            tmp = line.index(y)
            y = line[tmp+1]
            x -= 1
        else:
            x -= 1
    print(f"#{n} {y}")

사다리를 역순으로 올라가는 문제

단순 구현 문제로 사다리 라인과 도착 좌표를 구한다.

처음에 line을 [0]*100인 리스트로 설정해줬다가 메모리와 속도 측면에서 비효율적인 것 같아 line만 index로 찾는 코드로 수정해주었는데 메모리와 속도 측면에서 딱히 좋아진 모습을 보이지는 않았다.

image.png