https://school.programmers.co.kr/learn/courses/30/lessons/172928
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
단순 구현문제. 함정은 'O'만 움직일 수 있는게 아니라 'S'도 이동할 수 있다는것
def solution(park, routes):
answer = []
h = len(park);
w = len(park[0]);
# park 2중배열로 변환
parkArr = [];
for i in range(len(park)):
parkArr.append(list(park[i]))
# routes 2중배열로 변환
routesArr = []
for i in range(len(routes)):
routesArr.append(routes[i].split(' '))
start = []
for y in range(len(parkArr)):
for x in range(len(parkArr[y])):
if parkArr[y][x] == 'S':
start = [y, x]
def goTo(direction, length, start):
# routesArr을 돌며 방향 확인
starty = start[0]
startx = int(start[1])
if direction == 'E':
if 0 > startx + length or startx + length >= w: return start # 벗어나면 원래 위치 리턴
for i in range(1, 1 + length):
if parkArr[starty][startx + i] != 'X':
continue
else:
return start
return [starty, startx + length]
elif direction == 'S':
if 0 > starty + length or starty + length >= h: return start
for i in range(1, 1 + length):
if parkArr[starty + i][startx] != 'X':
continue
else:
return start
return [starty + length, startx]
elif direction == 'W':
if 0 > startx - length or startx - length >= w: return start
for i in range(1, 1 + length):
if parkArr[starty][startx - i] != 'X':
continue
else:
return start
return [starty, startx - length]
else:
if 0 > starty - length or starty - length >= h: return start
for i in range(1, 1 + length):
if parkArr[starty - i][startx] != 'X':
continue
else:
return start
return [starty - length, startx]
for i in range(len(routesArr)):
start = goTo(routesArr[i][0], int(routesArr[i][1]), start)
answer = start
return answer
'Algorithm > programmers' 카테고리의 다른 글
[파이썬] 프로그래머스: 대충 만든 자판 (1) | 2024.02.06 |
---|---|
[파이썬] programmers: 바탕화면 정리 (0) | 2024.01.25 |
[파이썬]PCCP 기출문제 2번/ 석유 시추 (0) | 2024.01.09 |
[파이썬]programmers: [PCCP 기출문제]1번 / 붕대감기 (1) | 2024.01.08 |
[파이썬]programmers: 게임 맵 최단거리 (0) | 2023.03.31 |
댓글