Computer Science/Algorithm
[Programmers] Level 1 - 공원 산책
ddu0422
2023. 6. 12. 14:14
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
directions = {
'N': (-1, 0),
'W': (0, -1),
'S': (1, 0),
'E': (0, 1)
}
def solution(park, routes):
# 초기화
n, m = len(park), len(park[0])
x, y = 0, 0
maps = []
for i in range(n):
temp = []
for j in range(m):
if park[i][j] == 'S':
x, y = (i, j)
temp.append(park[i][j])
maps.append(temp)
# 문제풀이
for data in routes:
# 명령어
direction, distance = data.split(" ")
# 방향 지정
dx, dy = directions[direction]
# 한 칸씩 이동
for i in range(int(distance)):
nx = x + dx
ny = y + dy
# 조건 1: 공원을 벗어나는 경우 명령어 무시
if not (0 <= nx < n and 0 <= ny < m):
x -= dx * i
y -= dy * i
break
# 조건 2: 장애물인 경우 명령어 무시
if maps[nx][ny] == 'X':
x -= dx * i
y -= dy * i
break
x, y = nx, ny
return [x, y]
채점 결과