코딩테스트
[Python] 공원 산책
snoony
2024. 3. 12. 17:23
https://school.programmers.co.kr/learn/courses/30/lessons/172928
def solution(park, routes):
answer = []
# 시작 좌표를 담기 위한 변수들 init
answer_i = 0
answer_j = 0
for i in range(len(park)):
for j in range(len(park[i])):
# 시작 좌표 얻기
if park[i][j] == 'S':
answer_i = i
answer_j = j
# 각 route에 대해서
for route in routes:
flag = 0 # 지나가는 길에 장애물이 있는지 확인하기 위한 flag
dir, dis = route.split(" ")
dis = int(dis)
if dir == 'E': # 동쪽
if answer_j + dis >= len(park[answer_i]): # 공원을 넘어갈 때
continue
else:
for i in range(1, dis+1):
# 가는길에 장애물이 있을 때
if park[answer_i][answer_j+i] == 'X':
flag = 1
break
if flag == 1: # 장애물이 있다면
continue
else: # 없다면
answer_j += dis
elif dir == 'S':
if answer_i + dis >= len(park): # 공원을 넘어갈 때
continue
else:
for i in range(1, dis+1):
if park[answer_i+i][answer_j] == 'X':
flag = 1
break
if flag == 1:
continue
else:
answer_i += dis
elif dir == 'W':
if answer_j - dis < 0: # 공원을 넘어갈 때
continue
else:
for i in range(1, dis+1):
if park[answer_i][answer_j-i] == 'X':
flag = 1
break
if flag == 1:
continue
else:
answer_j -= dis
elif dir == 'N':
if answer_i - dis < 0: # 공원을 넘어갈 때
continue
else:
for i in range(1,dis+1):
if park[answer_i-i][answer_j] == 'X':
flag = 1
break
if flag == 1:
continue
else:
answer_i -= dis
# answer 배열에 좌표 append
answer.append(answer_i)
answer.append(answer_j)
return answer
중복되는 코드가 많은 듯한 느낌이라 줄여보려고 한다
그런데 동,서,남,북으로 갈때 조금씩 달라서 애매한 것 같다