본문 바로가기
프로그래머스/2단계

(Python/LV2) 방문길이

by windy7271 2022. 9. 30.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/49994

 

프로그래머스

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

programmers.co.kr

풀이:

 

def solution(dirs):

    count = 0

    start =[]
    start.append([0,0])
    for i in dirs:
        if i == "L":
            start.append([ start[-1][0] -1, start[-1][1] ])
        elif i == "R":
            start.append([ start[-1][0] +1, start[-1][1] ])
        elif i == "U":
            start.append([ start[-1][0] , start[-1][1] +1 ])
        elif i == "D":
            start.append([ start[-1][0] , start[-1][1] -1 ])
    set_list = list(set(map(tuple,start)))

    for x, y in set_list:
        if abs(x) > 5 or abs(y) > 5:
            count += 1
    return len(set_list) - count
    
코드 실행만 맞춤,,

 [] 를 다 하고 중복을 제거하는것보다

set을 선언후 넣어주는게 더 유리하다고 생각한다.

 

 

def solution(dirs):
    start = set()
    x = 0; y = 0
    for d in dirs:
        if d == 'U' and y < 5:
            start.add(((x, y), (x, y+1)))
            y += 1

        elif d == 'D' and y > -5:
            start.add(((x, y-1), (x, y)))
            y -= 1

        elif d == 'R' and x < 5:
            start.add(((x, y), (x+1, y)))
            x += 1

        elif d == 'L' and x > -5:
            start.add(((x-1, y), (x, y)))
            x -= 1
    return len(start)

 

반응형

댓글