반응형
풀이
- 코드가 길어질 수 밖에 없는 문제...
- 물론 짧게 만든다면야 만들겠지만
- 크게 효율과 가독성이 좋지 않아 아래와 같이 풀이
- routes로 받아온 값에 따라 op 방향으로 n 만큼 한칸씩 이동해보며
- 장애물인지 확인하고, 장애물일 경우 반복문 탈출
- 이전에 op 방향 조건 분기와 동시에 최종으로 이동할 곳이
- 배열 범위에서 벗어나지 않는지 확인하면 해결
def solution(park, routes):
for i in range(len(park)):
for j in range(len(park[i])):
if park[i][j] == "S":
y,x = i,j
for k in routes:
op,n = k.split()
n = int(n)
state = True
if op == "E" and x+n < len(park[i]):
for l in range(1,n+1):
if park[y][x+l] == "X":
state = False
break
if state: x += n
elif op == "W" and x-n >= 0:
for l in range(1,n+1):
if park[y][x-l] == "X":
state = False
break
if state: x -= n
elif op == "S" and y+n < len(park):
for l in range(1,n+1):
if park[y+l][x] == "X":
state = False
break
if state: y += n
elif op == "N" and y-n >= 0:
for l in range(1,n+1):
if park[y-l][x] == "X":
state = False
break
if state: y -= n
return [y,x]
'알고리즘' 카테고리의 다른 글
[프로그래머스, 파이썬] 겹치는 선분의 길이 (0) | 2024.02.20 |
---|---|
[프로그래머스, 파이썬] 달리기 경주 (0) | 2024.02.19 |
[프로그래머스, 파이썬] 옹알이(1) (0) | 2024.02.16 |
[프로그래머스, 파이썬] 정수를 나선형으로 배치하기 (0) | 2024.02.16 |
[백준, 파이썬, 1544번] 사이클 단어 (0) | 2024.02.15 |