1175. 배달.

·2025년 11월 10일

백준 알고리즘

목록 보기
308/325

문제 해결 전략

-> 상태값을 생각해내지 못했다.
이 때 상태값은 복귀하더라도 이미 완료된 state에는 변화를 주면 안되기 때문에 비트 연산자를 사용해야 한다!

  • visted 배열 만들 때 pos이외의 2가지 정보가 추가되야 한다.

  • 1) 방향

  • 2) 상태값 : 2개의 C를 방문해야 한다.
    -> 가번 C를 방문 했는지, 나번 C를 방문했는지를 알아야 한다.

  • 그리고 가번인지? 나번인지? 를 구분하기 위해서
    가번 방문시에는 +1을 / 나번 방문시에는 +2를 증감하자.

생각해볼 부분.

  • 왜 비트연산자를 사용하는지에 대해서.

  • 방문한 위치에 대해서 다시 복귀를 해야 하는 경우가 존재할 수 있다.

  • 이러한 경우

  • 이렇게 가야 한다.

  • 비트연산을 해야만, 이미 방문했는데 또 방문 한다고 하면,
    해당 state 는 어차피 true 여야 한다.

  • 위의 그림에서 비트 연산을 하지 않고, 증감한다면 어떻게 될까?

  • S -> C 로 갈때 1이 되었는데 또 아래에서 위로 올라가는 동작에서 1이 아닌 2가 되어 버린다...

반례

3 5
##C##
#.C##
#..S#
ans -> 5

profile
🔥🔥🔥

0개의 댓글