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 |