내 코드
def solution(dirs):
cur=(0,0)
l = set()
for d in dirs:
if d == "U":
walk = (cur[0],cur[1]+1)
elif d == "D":
walk = (cur[0],cur[1]-1)
elif d == "R":
walk = (cur[0]+1,cur[1])
else:
walk = (cur[0]-1,cur[1])
if walk[0] <= 5 and walk[0] >=-5 and walk[1] <= 5 and walk[1] >=-5:
l.add((cur,walk))
l.add((walk,cur))
cur = walk
return len(l)//2
현재 좌표, 움직인 다음의 좌표를 구해 집합에 넣는다. 좌표 2개가 있을때 움직이는 방향은 cur -> walk, cur->walk 두 종류가 존재하므로 집합에 두 경우의 수를 다 넣는다.
return 은 집합에 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
나는 경우의 수를 다 나눴는데 이 풀이는 d딕셔너리를 만들어서 풀었다. 풀이방법은 비슷하다!!!
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 없는 숫자 더하기 (0) | 2021.09.15 |
---|---|
[프로그래머스] 예상 대진표 (0) | 2021.09.10 |
[프로그래머스] 피보나치 수 (0) | 2021.09.10 |
[프로그래머스] 땅따먹기 (0) | 2021.09.10 |
[프로그래머스] 점프와 순간이동 (0) | 2021.09.10 |