최대 1 분 소요

문제 링크

내 풀이

def valid_move(x,y):
    return -5 <= x <= 5 and -5 <= y <= 5

def solution(dirs):
    # -5 <= x <= 5, -5 <= y <= 5 인 좌표만 유효함
    direction = {'U': (0,1), 'D': (0,-1),'L': (-1,0), 'R': (1,0)}
    point = [] # 지나간 좌표
    x = 0
    y = 0 # 초기 좌표
    for dir in dirs:
        dx , dy = direction[dir]
        if valid_move(x+dx, y+dy):
            x1 = x
            y1 = y
            x += dx
            y += dy
            if [x1,y1,x,y] not in point and [x,y,x1,y1] not in point:
                point.append([x1,y1,x,y])
                
    return len(point)

풀이 해석

  • 4가지 방향에 대해 dict타입으로 선언후 지니간 좌표를 담을 list를 생성
  • dirs를 for문을 통해 읽으며 이동한다
  • 이 때 x, y는 범위를 넘지 않아야하며 이를 함수로 제한하였다
  • 지나간 좌표중에 한쪽방향과 뒤집은 방향이 모두 없을 경우에만 append해준다

댓글남기기