[프로그래머스] 방의 개수

less than 1 minute read

문제 설명

원점(0,0)에서 시작해서 숫자가 적힌 방향으로 이동하며 선을 긋습니다.

그림을 그릴 때, 사방이 막히면 방하나로 샙니다. 이동하는 방향이 담긴 배열 arrows가 매개변수로 주어질 때, 방의 갯수를 return 하도록 solution 함수를 작성하세요.

제한사항

  • 배열 arrows의 크기는 1 이상 100,000 이하 입니다.
  • arrows의 원소는 0 이상 7 이하 입니다.
  • 방은 다른 방으로 둘러 싸여질 수 있습니다.

풀이

실패
‘그래프’문제니까 순환을 찾아내는 방식으로 해야겠다고 생각해서 잠깐 헤맸다. 그러다 방문한 정점에 다시 방문했을 때 사방이 막히는 방이 생긴다는 것을 깨닫고 풀이를 시도하였다. 우선 방문한 정점에 다시 방문하더라도 이전에 같은 방법으로 방문한 적이 있다면 방이 생기지 않는다. 따라서 ‘방문한 방법’도 저장하기 위해 간선을 저장하는 map을 선언하는 것 까지는 도달했지만, 간선이 교차하는 것을 어떻게 세야할지 감을 잡지 못했다. 이 부분에서 완전하게 막혀버리니, 지금까지의 풀이 내용에 대한 자신도 없어졌고 결국 다른 코드를 보게 되었다. 다른 코드에서는 교차하는 간선을 체크해주기 위해서 2칸씩 움직이도록 코드를 작성했다. 이렇게하면 교차되는 간선을 체크할 수 있게 된다. 이 부분을 제외한 풀이법까지 생각해냈으나, 마지막 중요 포인트 하나를 놓쳤다는 것이 많이 아쉽다.

코드

url