알고리즘
[프로그래머스 - python] 방문길이
돌맹96
2024. 2. 25. 22:55
728x90
반응형
코딩테스트 연습 - 방문 길이 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제핵심
A->B와 B->A를 같은경로로 취급하고 나중에 나눠줘라.
CODE
# 좌표평면을 벗어나는지 체크하는 함수
def is_valid_move(nx, ny):
return 0 <= nx < 11 and 0 <= ny < 11
# 다음 좌표 결정
def update_location(x, y, dir):
if dir == 'U':
nx, ny = x, y+1
elif dir == 'D':
nx, ny = x, y-1
elif dir == 'L':
nx, ny = x - 1, y
elif dir == 'R':
nx, ny = x + 1, y
return nx, ny
def solution(dirs):
x, y = 5, 5
ans = set() # 겹치는 좌표를 1개로 처리하기 위함
for dir in dirs: # 주어진 명령어로 움직이면서 좌표 저장
nx, ny = update_location(x, y, dir)
if not is_valid_move(nx, ny): # 벗어난 좌표는 인정하지 않음
continue
# A에서 B로 간 경우 B에서 A도 추가해야 함(총 경로의 개수는 방향성이 없음)
ans.add((x, y, nx, ny))
ans.add((nx, ny, x, y))
x, y = nx, ny # 좌표를 이동했으므로 업데이트
return len(ans) / 2
728x90
반응형