ISTP의 간단명료 블로그

[프로그래머스] 캐릭터의 좌표 / 배열의 덧셈 본문

풀다

[프로그래머스] 캐릭터의 좌표 / 배열의 덧셈

djwis 2023. 6. 10. 16:15

문제

풀이

def solution(keyinput, board):
    answer = [0,0]
    for step in keyinput:
        if step=="left":
            temp = [x+y for x,y in zip(answer, [-1,0])]
        elif step=="right":
            temp = [x+y for x,y in zip(answer, [1,0])]
        elif step=="up":
            temp = [x+y for x,y in zip(answer, [0,1])]
        elif step=="down":
            temp = [x+y for x,y in zip(answer, [0,-1])]
        if abs(temp[0])<=board[0]//2 and abs(temp[1])<=board[1]//2:
            answer = temp
    return answer

다른사람 풀이

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]
  • 딕셔너리 사용

배운점

  • 배열의 덧셈
    • [1,2,3] + [4,5,6] 👉 [1,2,3,4,5,6] 이 된다...
    • [5,7,9]로 만드려면 아래 방법 활용 필요
      • [list1[i] + list2[i] for i in range(len(list1))]
      • [x+y for x,y in zip(list1, list2)]