본문 바로가기

알고리즘

프로그래머스) 공원 산책

https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

 

 

def solution(park, routes):
    answer = [0,0]
    
    for i in range(len(park)):
        idx = park[i].find('S')
        if idx != -1:
            answer[0] = i
            answer[1] = idx
            break

    for i in range(len(routes)):
        direction, count = routes[i].split(' ')
        Wall = False
        count = int(count)
        position = answer[:]
        Wall = False
        for j in range(count):
            if direction == 'N':
                if  (0 <= position[0] - 1 < len(park)):
                    if park[position[0] - 1][position[1]] != 'X':
                        position[0] -= 1
                    else:
                        Wall = True
                        break
                else:
                        Wall = True
                        break
                        
            if direction == 'S':
                if  (0 <= position[0] + 1 < len(park)):
                    if park[position[0] + 1][position[1]] != 'X':
                        position[0] += 1
                    else:
                        Wall = True
                        break
                else:
                        Wall = True
                        break
                        
            if direction == 'W':
                if ( 0 <= position[1] - 1 < len(park[0]) ):
                    if park[position[0]][position[1] - 1] != 'X':
                        position[1] -= 1
                    else:
                        Wall = True
                        break
                else:
                        Wall = True
                        break
                        
            if direction == 'E':
                if  ( 0 <= position[1] + 1 < len(park[0])):
                
                    if park[position[0]][position[1] + 1] != 'X':
                        position[1] += 1
                    else:
                        Wall = True
                        break
                else:
                        Wall = True
                        break
                    
        if Wall == False:
            answer = position[:]
        
    return answer

 

입출력 예만 보면 딱 bfs dfs문제 같지만 사실 구현 문제 같다.

딱히 풀이방법을 떠올리기 힘들거나 그런 것은 없는데, 꽤나 복잡하게 풀었다..

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

프로그래머스) 대충 만든 자판  (0) 2023.05.08
프로그래머스) 달리기 경주  (0) 2023.04.16
프로그래머스)바탕화면 정리  (0) 2023.03.24
프로그래머스) 카드뭉치  (0) 2023.03.19
프로그래머스)덧칠하기  (0) 2023.03.05