[Python] [SWEA] Ladder1(1210)

긍정왕·2021년 5월 21일
2

Algorithm

목록 보기
2/69
post-thumbnail

💡 문제 해결

  1. 목적지로 가는 시작점을 찾는 문제이기 때문에 목적지를 시작점으로 지정
  2. 다시 되돌아가는 경우를 제외하기 위해 방문리스트 생성
  3. x축index0이 될 때까지 반복
  4. 왼쪽이나 오른쪽으로 움직일 수 있다면 이동
  5. 양 쪽 모두 갈 수 없다면 위로 한 칸 이동

📌 처음에 while문으로 접근했는데 가독성도 떨어지고 조건이 많아져 다시 간단하게 구현



🧾 문제 설명

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

점심 시간에 산책을 다니는 사원들은 최근 날씨가 더워져, 사다리 게임을 통하여 누가 아이스크림을 구입할지 결정하기로 한다.
김 대리는 사다리타기에 참여하지 않는 대신 사다리를 그리기로 하였다.
사다리를 다 그리고 보니 김 대리는 어느 사다리를 고르면 X표시에 도착하게 되는지 궁금해졌다. 이를 구해보자.
X=0인 출발점에서 아래 방향으로 진행하면서 좌우 방향으로 이동 가능한 통로가 나타나면 방향 전환을 하게 된다.
방향 전환 이후엔 다시 아래 방향으로만 이동하게 되며, 바닥에 도착하면 멈추게 된다.

문제보기



🖨 입출력



📝 풀이

for _ in range(1, 11):
    tc = int(input())
    ladders = list(list(map(int, input().split())) for _ in range(100))

    s = ladders[99].index(2)
    x, y = 99, s
    visited = [[0] * 100 for _ in range(100)]
    while x != 0:
        visited[x][y] = 1
        if y - 1 >= 0 and ladders[x][y - 1] and visited[x][y - 1] == 0:
            y -= 1
            continue
        elif y + 1 < 100 and ladders[x][y + 1] and visited[x][y + 1] == 0:
            y += 1
            continue
        else:
            x -= 1
    
    answer = y

    print(f'#{tc} {answer}')

profile
Impossible + 땀 한방울 == I'm possible

0개의 댓글