반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 상한가 분석
- 주식
- 알고리즘
- 급등주 분석
- 급등주
- 상한가
- 손경제
- 프로그래머스
- Python
- 급등 이유
- 손에 잡히는 경제
- 코테
- 코딩테스트
- 손경제 요약
- 손에 잡히는 경제 요약
- 경제뉴스 요약
- 상한가 이유
- 파이썬
- 백준
- boj
- java
- 이진우의 손에 잡히는 경제
- 자바
- 테마주
- 주식 상한가
- Programmers
- 경제
- 이진우
- 경제뉴스
- 주식 분석
Archives
- Today
- Total
Completion over Perfection
프로그래머스 - 공원 산책 (파이썬3 Python3) 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/172928
로봇의 이동경로를 미리 입력받아서 공원에서 이동을 시키면 되는데, 까다로운 부분이 있습니다.
이동명령을 수행하다가 만약 중간에 공원을 벗어나거나 장애물이 있는 경우라면 해당 명령어를 무시해야되는데,
이럴경우 그 명령을 수행하기 전의 위치로 돌아가야 합니다.
정리하자면,
① 이동 명령을 수행하는 중간에 단 한번이라도 공원밖으로 나가거나 장애물을 만나면 그 명령어를 무시
(명령어를 수행하기 바로 직전의 위치로 되돌아가서 다음 명령어를 수행해야함)
② 이동명령을 정상적으로 다 수행했다면 이동완료된 위치에서 다음 이동명령을 수행
이렇게 구현해주면 됩니다.
코드 참고해주세요.
def solution(park, routes):
answer = []
for i in range(len(park)):
for j in range(len(park[0])):
if park[i][j] == 'S':
curX, curY = j, i
successX, successY = j, i
# print(curX, curY)
for route in routes: # 명령어를 하나씩 꺼내면서 수행
direction, step = route.split() # 방향과 거리를 분리
step = int(step)
# print("curX : ", curX, "curY : ", curY, "direction : ", direction, "step : ", step)
if direction == 'E': # 동쪽으로 이동 X좌표
for i in range(step):
# print(direction, curX, curY, i)
nextX = curX + 1
# print("nextX : ", nextX)
if nextX < 0 or nextX >= len(park[0]) or park[curY][nextX] == 'X':
curX = successX
curY = successY
break
else:
if i == step - 1:
successX = nextX
successY = curY
curX = nextX
if direction == 'W': # 서쪽으로 이동 X좌표
for i in range(step):
# print(direction, curX, curY, i)
nextX = curX - 1
# print("nextX : ", nextX)
if nextX < 0 or nextX >= len(park[0]) or park[curY][nextX] == 'X':
curX = successX
curY = successY
break
else:
if i == step - 1:
successX = nextX
successY = curY
curX = nextX
if direction == 'S': # 남쪽으로 이동 Y좌표
for i in range(step):
# print(direction, curX, curY, i)
nextY = curY + 1
# print("nextY : ", nextY)
if nextY < 0 or nextY >= len(park) or park[nextY][curX] == 'X':
curX = successX
curY = successY
break
else:
if i == step - 1:
successX = curX
successY = nextY
curY = nextY
if direction == 'N': # 남쪽으로 이동 Y좌표
for i in range(step):
# print(direction, curX, curY, i)
nextY = curY - 1
# print("nextY : ", nextY)
if nextY < 0 or nextY >= len(park) or park[nextY][curX] == 'X':
curX = successX
curY = successY
break
else:
if i == step - 1:
successX = curX
successY = nextY
curY = nextY
answer.append(curY)
answer.append(curX)
# print(answer)
return answer
반응형
'파이썬 (Python)' 카테고리의 다른 글
프로그래머스 - 바탕화면 정리 (파이썬3 Python3) (0) | 2023.09.04 |
---|---|
프로그래머스 - 성격 유형 검사하기 (파이썬3 Python3) (0) | 2023.09.03 |
프로그래머스 - 개인정보 수집 유효기간 (파이썬3 Python3) (0) | 2023.09.01 |
프로그래머스 - 자연수 뒤집어 배열로 만들기 (파이썬3 Python3) (0) | 2023.08.31 |
프로그래머스 - 자릿수 더하기 (파이썬3 Python3) (0) | 2023.08.30 |
Comments