캐릭터의 좌표 - Python

2023. 9. 30. 19:09공부/📝 프로그래머스

def solution(keyinput, board):
    answer = [0, 0]
    margin_x = (board[0] - 1) // 2
    margin_y = (board[1] - 1) // 2
    for key in keyinput:
        if key == "up":
            if answer[1] == margin_y:
                pass
            else:
                answer[1] += 1
        elif key == "down":
            if answer[1] == -margin_y:
                pass
            else:
                answer[1] -= 1
        elif key == "left":
            if answer[0] == -margin_x:
                pass
            else:
                answer[0] -= 1
        elif key == "right":
            if answer[0] == margin_x:
                pass
            else:
                answer[0] += 1
    return answer


# Test Cases
print(solution(["left", "right", "up", "right", "right"], [11, 11]))
print("="*50)
print(solution(["down", "down", "down", "down", "down"], [7, 9]))
print("="*50)

  위와 같이 풀었습니다.

 


def solution(keyinput, board):
    x_lim,y_lim = board[0]//2,board[1]//2
    move = {'left':(-1,0),'right':(1,0),'up':(0,1),'down':(0,-1)}
    x,y = 0,0
    for k in keyinput:
        dx,dy = move[k]
        if abs(x+dx)>x_lim or abs(y+dy)>y_lim:
            continue
        else:
            x,y = x+dx,y+dy

    return [x,y]

  이 코드를 보니 제 코드에서 고칠 점이 보이네요. 잘 만든 듯 합니다.

 


def solution(keyinput, board):
    curr = [0, 0]
    for k in keyinput:
        if k == 'left':
            curr[0] = max(curr[0] - 1, -(board[0] // 2))
        elif k == 'right':
            curr[0] = min(curr[0] + 1, board[0] // 2)
        elif k == 'down':
            curr[1] = max(curr[1] - 1, -(board[1] // 2))
        else:
            curr[1] = min(curr[1] + 1, board[1] // 2)

    return curr

  정말 잘 풀었다고 생각되는 풀이를 찾았습니다. 대단하네요.

 


 

프로그래머스

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

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

등수 매기기 - Python  (0) 2023.09.30
로그인 성공? - Python  (0) 2023.09.30
외계어 사전 - Python  (0) 2023.09.30
문자열 계산하기 - Python  (0) 2023.09.30
영어가 싫어요 - Python  (0) 2023.09.30