728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/172928
def move(dirr): #이동함수
dx=[-1, 1, 0,0] #상하좌우NSWE
dy=[0,0,-1,1]
if dirr=="N":
return dx[0],dy[0]
elif dirr=="S":
return dx[1],dy[1]
elif dirr=="W":
return dx[2],dy[2]
else:
return dx[3],dy[3]
def solution(park, routes):
start_x=0
start_y=0
for i in range(len(park)): #시작점을 찾음
for k in range(len(park[i])):
if park[i][k]=='S':
start_x=i
start_y=k
break
x=start_x
y=start_y
for i in range(len(routes)):
dx, dy=move(routes[i][0])
mult=int(routes[i][2])
x_ori=x
y_ori=y
for i in range(mult):
if((x+dx)<len(park) and (y+dy)<len(park[i])and
(x+dx)>=0 and (y+dy) >=0):
if(park[x+dx][y+dy]!='X'):
x+=dx
y+=dy
else: #X만난경우
x=x_ori
y=y_ori
break
else:
x=x_ori
y=y_ori
break
#배열크기체크
# 장애물x체크 블럭의 원소 체크
return x, y
문제를 꼼꼼히 읽자! dx, dy이용한 거 잘했구,
조건이 이동중 멈추는게 아니라, 하나라도 실패라면 처음으로 돌아가는거라 x_ori, y_ori설정을 해주었다.
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 타겟넘버 파이썬 풀이 lv2 (0) | 2023.06.23 |
---|---|
[프로그래머스] 연속된 부분 수열의 합 (0) | 2023.06.23 |
혼자 놀기의 달인 파이썬 풀이 (0) | 2023.06.21 |
[Mysql] 평균 일일 대여 요금 구하기 풀이 (0) | 2023.06.20 |
[Mysql] 프로그래머스 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2023.06.19 |