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