[프로그래머스/python] 방문 길이
2022. 8. 15. 21:45ㆍ알고리즘/프로그래머스
반응형
방문 길이
Summer/Winter Coding(~2018)
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
지나간 길을 (좌표X, 자표Y, 방향)
으로 체크를 합니다.
예시로 (0,0)
에서 윗길은 (0,0,Up)
로 표현이 가능하며 (0,1,Down)
으로 두가지의 표현이 생깁니다.
이 두가지의 좌표를 매번 이동마다 집합에 추가를 합니다.
중복된 길의 경우 좌표가 집합에 추가되기 때문에 중복되는 길은 고려하지 않습니다.
풀이코드
def solution(dirs):
answer = 0
tmp = []
for i in dirs:
tmp.append(i)
navi = set([])
start = (0,0)
for dir in tmp:
x,y = start
if dir=="U":
if -5<=x+1<=5 and -5<=y<=5:
navi.add((x,y,"U"))
navi.add((x+1,y,"D"))
start = (x+1,y)
elif dir=="D":
if -5<=x-1<=5 and -5<=y<=5:
navi.add((x,y,"D"))
navi.add((x-1,y,"U"))
start = (x-1,y)
elif dir=="L":
if -5<=x<=5 and -5<=y-1<=5:
navi.add((x,y,"L"))
navi.add((x,y-1,"R"))
start = (x,y-1)
else:
if -5<=x<=5 and -5<=y+1<=5:
navi.add((x,y,"R"))
navi.add((x,y+1,"L"))
start = (x,y+1)
return len(navi)//2
가장 인기 많은 코드
def solution(dirs):
s = set()
d = {'U': (0,1), 'D': (0, -1), 'R': (1, 0), 'L': (-1, 0)}
x, y = 0, 0
for i in dirs:
nx, ny = x + d[i][0], y + d[i][1]
if -5 <= nx <= 5 and -5 <= ny <= 5:
s.add((x,y,nx,ny))
s.add((nx,ny,x,y))
x, y = nx, ny
return len(s)//2
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python] 멀리 뛰기 (0) | 2022.08.15 |
---|---|
[프로그래머스/python] 프렌즈4블록 (0) | 2022.08.15 |
[프로그래머스/python] 후보키 (0) | 2022.08.10 |
[프로그래머스/python] 자물쇠와 열쇠 (0) | 2022.08.10 |
[프로그래머스/python] 순위 검색 (0) | 2022.08.10 |