«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Recent Posts
Tags more
Today
Total
관리 메뉴

내 인생은 개발 중

[프로그래머스] 방문 길이 - Python 본문

Algorithm/프로그래머스

[프로그래머스] 방문 길이 - Python

seul.e 2024. 8. 10. 15:47

https://school.programmers.co.kr/learn/courses/30/lessons/49994

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(dirs):
    visited = set()
    direction =  {'U': (1, 0), 'D': (-1, 0), 'R': (0, 1), 'L': (0, -1)}
    y, x = 0, 0

    for d in dirs:
        dy, dx = direction[d]
        ny, nx = y + dy, x + dx
        if -5 <= ny < 6 and -5 <= nx < 6:
            visited.add(((y, x), (ny, nx)))
            visited.add(((ny, nx), (y, x)))
            y, x = ny, nx

    return len(visited) // 2

 

처음엔 딕셔너리에 방향을 저장하고 bfs로 풀었다.
근데 답이 안나와서 방문 지점을 다 그려보니
(0,0) (1,0) (1,-1), (2,-1), (2,0) (2,1) (1,1) (1,0)
이렇게 나오는걸 볼 수 있는데 1,1에서 1,0으로 간 적이 없는데 1,0을 방문했기에 이 루트는 더해지지 않았었다.
결국 답을 찾아보았는데 set을 이용해서 훨씬 더 간편하게 풀 수 있다는 것을 알게되었다.

 

set을 이용해서 방문한 지점을 방문 처리하는게 아니라 방문한 간선을 처리해주었다.
A -> B를 이동한건 B -> A로 이동한것과 같기 때문에 두개 다 set에 넣어주고 실제 방문한 거리는 이를 2로 나누는 것이니 이를 2로 나눠줬댜!

 

 

 

문제 보고 쉽다고 생각했눈데!! 아직 더 알고리즘을 풀어봐야겠댜 ㅠㅠ
얼른 알고리즘 왕마니 풀어서 알고리즘 다 뿌수고 다녀야짐~!

 

Comments