반응형

방문 길이 - 프로그래머스

 

문제 링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

문제 복기

경로 문제는 예전에 Dynamic programming을 공부할 때, 자주 접한 케이스이다.

경로 문제는 대부분 유사한 형식을 가지고 있는 것 같다.

 

이번 문제도 동일하다.

  • 방향 정보를 담고 있는 move 객체
  • dirs을 순회하면서 move[dir]을 구조 분해하여 각각의 좌표를 업데이트해주는 로직
  • 경계를 벗어났는지 판단해주는 예외처리

적어도 위의 3가지는 자주 등장하는 코드이니 익숙하지 않다면 익혀주는게 좋을 것 같다.

 

문제 풀이

1단계

문제 복기에서 말했듯이,

move 객체를 지정해줘야 어느 좌표로 얼만큼 이동했는지 위치는 어디인지 판단할 수 있어서 작성해줘야 한다.

 

이 곳에서는 중복되는 길인지 판단을 해줘야 하기 때문에 set을 사용하기로 한다.

(중복하면 항상 우선적으로 떠올리면 좋은 것은 set이다.)

 

방문한 경로를 담을 set을 선언하고, 좌표와 방문 길이도 초기화한다.

 


2단계

dirs를 순회하면서 구조 분해를 통해서 현재 위치를 계산한다.

경계를 이탈했는지 판단을 한다.

 

pathreversePath를 통해서 방문한 경로를 보관한다.

set(visited)에서 두 값이 없다면 처음 방문하는 경로이기 때문에 set에 추가해주고, totalLength를 증가시킨다.

 

현재 위치를 업데이트하면서 반복문을 마무리한다.

마지막에 totalLength를 반환하면 끝!

방문 길이 - 프로그래머스

 

반응형