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
반응형
'알고리즘' 카테고리의 다른 글
[종만북 예제 P150] 보글 게임 전체코드 (1) | 2024.12.04 |
---|---|
[PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2024.11.19 |
[BOJ-1085] C++ 직사각형에서 탈출 (0) | 2023.11.08 |
[Softeer level2] Python 8단변속기 (1) | 2023.08.08 |
[Softeer level2] Python 금고털이 (0) | 2023.08.08 |