본문 바로가기

Algorithm/Implementation

(Python3) - 프로그래머스(코딩테스트 입문) : 캐릭터의 좌표

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/120861

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

방향이동 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 좌, 우, 상, 하를 의미하는 x,y좌표 dx, dy배열을 선언해 줍니다.

 

2. 정답 변수 answer 선언 후 [0,0]으로 초기화해줍니다.

 

3. 가로 길이 제한 width_limit, 세로 길이 제한 height_limit 선언 후 board의 절반으로 나눈 값으로 저장합니다. 

📔 풀이과정

keyinput에 대해 loop를 수행하며 다음을 진행합니다.

1. input의 경우에 따라 다음 좌표를 구해줍니다.

 

2. 다음좌표가 유효하다면 answer를 해당 좌표로 갱신합니다.

📔 정답 출력 | 반환

answer를 반환합니다.


📕 Code

📔 Python3

dx = [-1,1,0,0]
dy = [0,0,1,-1]

def next_coord(pos, dir):
    return [pos[0] + dx[dir], pos[1] + dy[dir]]

def is_valid(coord, width_limit, height_limit):
    return -width_limit <= coord[0] and coord[0] <= width_limit and -height_limit <= coord[1] and coord[1] <= height_limit

def solution(keyinput, board):
    answer = [0,0]
    width_limit = board[0] // 2
    height_limit = board[1] // 2
    for input in keyinput:
        coord = []
        if input == 'left':
            coord = next_coord(answer, 0)
            print(coord)
        elif input == 'right':
            coord = next_coord(answer, 1)
        elif input == 'up':
            coord = next_coord(answer, 2)
        else:
            coord = next_coord(answer, 3)
        if is_valid(coord, width_limit, height_limit):
                answer = coord
    return answer

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.