Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ol-rlo-zl

[프로그래머스 lv2] 방문 길이 - 파이썬(Python) 본문

Programmers(Python)

[프로그래머스 lv2] 방문 길이 - 파이썬(Python)

ol-rlo-zl 2023. 4. 5. 13:13

문제

 

프로그래머스

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

programmers.co.kr

나의 풀이 (리스트 이용)

def solution(dirs):
    dic = {'U':[0,1],'D':[0,-1],'R':[1,0],'L':[-1,0]}
    before = [0,0]
    road = []
    for d in dirs:
        nx = before[0] + dic[d][0]
        ny = before[1] + dic[d][1]
        after = [nx,ny]
        if nx in range(-5,6) and ny in range(-5,6):
            if before+after not in road and after+before not in road:
                road.append(before+after)
            before = after
    return len(road)

다른 사람 풀이 (집합 이용)

def solution(dirs):
    dic = {'U':[0,1],'D':[0,-1],'R':[1,0],'L':[-1,0]}
    x, y = 0, 0
    road = set()
    for d in dirs:
        nx = x + dic[d][0]
        ny = y + dic[d][1]
        if -5 <= nx <= 5 and -5 <= ny <= 5:
            road.add((x,y,nx,ny))
            road.add((nx,ny,x,y))
            x, y = nx, ny
    return len(road) // 2