백준 1697 : 숨바꼭질

https://www.acmicpc.net/problem/1697

문제

1 2 3

풀이

BFS

  • 이제껏 풀었던 다른 BFS 문제와의 차이가 있다면 상하좌우 탐색이 아닌 x - 1, x + 1, x * 2 이동이라는 점이었다.
  • 처음에는 move 함수를 만들어서 이동 범위를 정해줘야 하나.. 고민하기도 하고 *2라는 것 때문에 일단 최단 거리를 구한 후 2로 나눈 몫과 나머지를 더해줘야 하나? 라는 생각도 했었다.
  • 그런데 그냥 기존 dx 범위를 지정해주었던 for문을 조금 변형시키면 되는 문제였다 ! !
  • for 00 in range(00) 식이 아니라 for 00 in(00)식을 활용했다. 사실 엄청 기초적인 부분이었는데 단번에 떠올리지 못해서 다시 한번 기초의 중요성을 느꼈다.

오답노트

  • end 변수를 선언할 때 vstd 배열을 만들 것만 생각하고 100001로 설정해주었었는데 계속 런타임 에러가 발생하였다.
  • 꼼꼼히 코드를 살펴 보니 bfs 함수 내에서 범위를 조건문으로 사용할 때 문제가 발생한다는 것을 발견하였고 end 변수를 먼저 100000으로 설정해준 후 vstd 배열을 만들 때 end에 1을 더해주는 식으로 코드를 수정하였다.
  • ❗깔끔하고 편한 코드도 좋지만 변수가 활용되는 곳을 꼼꼼히 살펴볼 것❗

완성된 코드

댓글남기기