사용 언어 - Python3
문제 - 공원 산책
정답
복잡한 for문 (정답 맞춘 여부 X)
1. 시작지점 S를 찾아 x,y좌표에 저장한다.
2. 현재위치를 xx, yy에 저장한다. 각 방향으로 xx, yy를 한 칸씩 이동한다.
0부터 max_x,max_y 사이에 좌표가 있어야 하고, 이동하는 위치에 장애물 X가 없는 경우에만 한칸씩 이동한다.
전부 이동했다면, 최종 xx,yy 위치를 x,y에 저장해준다.
4. [세로방향좌표, 가로방향좌표] = [y,x] 출력
def solution(park, routes):
x = 0
y = 0
# 시작지점 S x,y 좌표 찾기
for i in range(len(park)):
for j in range(len(park[i])):
if park[i][j] == "S":
x = j
y = i
max_x = len(park[0]) - 1 #0부터 시작하니까 -1해주기
max_y = len(park) - 1
for route in routes:
xx = x
yy = y
for step in range(int(route[2])): # "E 2" : E 방향으로 2만큼 움직이기
# 0과 max_x,max_y 사이에 있어야함 & 이동할 곳에 장애물 X 없어야함
if route[0] == "E" and xx != max_x and park[yy][xx+1] != "X":
xx += 1 # 오른쪽 한칸씩 이동
if step == int(route[2])-1: # 전부 이동했다면, 위치 저장
x = xx
elif route[0] == "W" and xx != 0 and park[yy][xx-1] != "X":
xx -= 1 # 왼쪽 한칸씩 이동
if step == int(route[2])-1:
x = xx
elif route[0] == "S" and yy != max_y and park[yy+1][xx] != "X":
yy += 1 # 오른쪽 한칸씩 이동
if step == int(route[2])-1:
y = yy
elif route[0] == "N" and yy != 0 and park[yy-1][xx] != "X":
yy -= 1 # 왼쪽 한칸씩 이동
if step == int(route[2])-1:
y = yy
return [y,x] # [세로방향좌표, 가로방향좌표]
레퍼런스
- 정답 참고
- 정답 깃허브
'Algorithm > 구현' 카테고리의 다른 글
[프로그래머스 lv1] 둘만의 암호 (0) | 2023.04.25 |
---|---|
[프로그래머스 lv1] 바탕화면 정리 (0) | 2023.04.24 |
[프로그래머스 lv1] 추억 점수 (0) | 2023.04.22 |
[프로그래머스 lv1] 삼총사 (0) | 2023.04.22 |
[프로그래머스 lv1] 달리기 경주 (0) | 2023.04.22 |
댓글