공부, 기록

1227. [S/W 문제해결 기본] 7일차 - 미로2 D4 파이썬 본문

코딩

1227. [S/W 문제해결 기본] 7일차 - 미로2 D4 파이썬

무는빼주세요 2020. 8. 23. 13:15

문제링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14wL9KAGkCFAYD&categoryId=AV14wL9KAGkCFAYD&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

풀이 : DFS를 활용하여 구현하였다. 탐색전에 시작점과 도착점을 지정해주었다.

def solution(start,goal,maps):
    mx = [1,-1,0,0]
    my = [0,0,1,-1]
    visited=[]
    stack=list()
    stack.append(start)
    while stack:
        x,y =stack.pop(0)
        for i in range(4):
            if (x,y) == goal:
                return 1
            dx = x+mx[i]
            dy = y+my[i]
            if -1<dx<100 and -1<dy<100 and maps[dx][dy]!=1 and (dx,dy) not in visited:
                visited.append((dx,dy))
                stack.append((dx,dy))
    return 0

# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, 11):
    # ///////////////////////////////////////////////////////////////////////////////////
    input()
    maps=list()
    start=None
    goal=None
    for i in range(100):
        line = list(map(int,list(input().strip())))
        maps.append(line)
        if 2 in line:
            start = (i,line.index(2))
        if 3 in line:
            goal = (i,line.index(3))
    print("#"+str(test_case),solution(start,goal,maps))
    # ///////////////////////////////////////////////////////////////////////////////////