티스토리 뷰

알고리즘/SWEA

[SWEA] 1210.Ladder1

빙빙 2021. 2. 19. 23:41

이 문제는 날 너무 힘들게 한 문제다.

몇번이나 고치고 고친지 모르겠다. 끝에가 2이므로 그 끝점을 찾아서 올라가는 방식이다.

오른쪽/왼쪽으로 갈 수 있는 곳까지 계속가고 위로올라가면서 제일 위에있는 즉 0행에 있는 열의 값을 구하면 되는 문제이다.

T = 10

for tc in range(1,T+1):
    N = int(input())
    arr = []
    for i in range(100):
        arr.append(list(map(int, input().split())))
    #배열 값 받음

    #끝에 2가 있는 점 찾아줌
    end = 0
    for i in range(100):
        if arr[99][i] == 2:
            end = i
            break
    x = 99
    y = end
    #1.기본은 위로 직진 x -= 1
    #2.좌.우를 만난다면 방향 틀어 좌.우로 직진
    #3.0을 만난다면 위로 직진
    #4.행이 0이라면 열값을 출력
    flag = False
    while x > 0 :
        flag = False
        if y+1 < 100 and arr[x][y+1] == 1: #만약 y+1이 범위를 넘어가지 않고, 오른쪽으로 갔을 때 1이 존재한다면
            while True:
                y += 1 #오른쪽으로 이동
                if y+1 < 100 and arr[x][y+1] == 1:
                    continue
                else:
                    x -= 1 #오른쪽으로 가고 바로 넘어가면 왼쪽을 봤을때 1이 있으므로 오른쪽으로 갔다가 왼쪽으로 가는 무한루프에 걸림
                    #그래서 오른쪽으로 가지 않는다면 break를 주기 전에 위로 올라가게한다
                    flag = True
                    break

        if y-1 >= 0 and arr[x][y-1] == 1: #왼쪽
            while True:
                y -= 1
                if y-1 >= 0  and arr[x][y-1] == 1: # 계속 왼쪽으로 직진
                    continue
                else:
                # elif arr[x][y - 1] == 0 or y - 1 == -1 :
                    x -= 1
                    flag = True
                    break
        if flag == False:
            x -= 1 #위쪽




    print('#{} {}'.format(tc,y))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 1974. 스도쿠검증  (0) 2021.02.20
[SWEA] 2001.파리퇴치  (0) 2021.02.20
[SWEA] 1979.어디에 단어가 들어갈 수 있을까  (0) 2021.02.19
[SWEA] 4843. 특별한정렬  (0) 2021.02.16
[SWEA] 4839. 이진탐색  (0) 2021.02.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함