본문 바로가기
Algorithm/구현

[프로그래머스 lv1] 공원 산책

by HANNI하니 2023. 4. 24.

사용 언어 - Python3

문제 - 공원 산책

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

정답

복잡한 for문 (정답 맞춘 여부 X)

1. 시작지점 S를 찾아 x,y좌표에 저장한다.

2. 현재위치를 xx, yy에 저장한다. 각 방향으로 xx, yy를 한 칸씩 이동한다.

0부터 max_x,max_y 사이에 좌표가 있어야 하고, 이동하는 위치에 장애물 X가 없는 경우에만 한칸씩 이동한다.

전부 이동했다면, 최종 xx,yy 위치를 x,y에 저장해준다.

4. [세로방향좌표, 가로방향좌표] = [y,x] 출력

def solution(park, routes):

    x = 0
    y = 0

    # 시작지점 S x,y 좌표 찾기
    for i in range(len(park)):
        for j in range(len(park[i])):
            if park[i][j] == "S":
                x = j
                y = i
    
    max_x = len(park[0]) - 1 #0부터 시작하니까 -1해주기
    max_y = len(park) - 1

    for route in routes:
        xx = x
        yy = y
        for step in range(int(route[2])): # "E 2" : E 방향으로 2만큼 움직이기
            # 0과 max_x,max_y 사이에 있어야함 & 이동할 곳에 장애물 X 없어야함
            if route[0] == "E" and xx != max_x and park[yy][xx+1] != "X":
                xx += 1 # 오른쪽 한칸씩 이동
                if step == int(route[2])-1: # 전부 이동했다면, 위치 저장
                    x = xx
                    
            elif route[0] == "W" and xx != 0 and park[yy][xx-1] != "X":
                xx -= 1 # 왼쪽 한칸씩 이동
                if step == int(route[2])-1:
                    x = xx
                    
            elif route[0] == "S" and yy != max_y and park[yy+1][xx] != "X":
                yy += 1 # 오른쪽 한칸씩 이동
                if step == int(route[2])-1:
                    y = yy
                    
            elif route[0] == "N" and yy != 0 and park[yy-1][xx] != "X":
                yy -= 1 # 왼쪽 한칸씩 이동
                if step == int(route[2])-1:
                    y = yy
                    
    return [y,x] # [세로방향좌표, 가로방향좌표]

 

 

 

레퍼런스

  • 정답 참고
 

[프로그래머스] 공원산책 (python 입문)

프로그래머스 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/172928문제 번호 : 172928문제 레벨 : lv1 (정답률 30%)문제 제목 : 공원산책park : map 상태routes :

velog.io

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글