티스토리 뷰

컴퓨터공학/Problem Solving

백준 1194

_Bibidi 2021. 1. 16. 12:06
 

1194번: 달이 차오른다, 가자.

첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고,

www.acmicpc.net

 

 꽤 재밌었던 문제. 왔던 방향으로 다시 되돌아가야 되는 경우가 있어서 처음엔 어떻게 구현해야할지 몰라서 계속 헤맸다. 열쇠를 새로 얻으면 벽에 부딪히고 다시 되돌아갈 수 있게 해야 하나 등등의 오만 생각이 다 들었으나, 현재 내가 어떤 상태에 놓여있는지 정의하면 문제가 간단해지는 걸 깨달음. int 하나를 내가 획득한 열쇠로 정의하고 내가 지금 이러한 열쇠를 얻은 상태에서 내가 가려는 지점을 방문한 적이 있는지 체크하면 중복을 방지할 수 있고 또 내가 새로운 열쇠를 얻은 시점에 가던 길 그대로 가는 경우와 되돌아가는 경우 모두 손쉽게 처리가 가능하다는 걸 깨달음.

 

 주의점은 새로운 열쇠를 얻었을 때 bit 상태를 업데이트 하므로 상태가 달라짐. visited 배열을 업데이트 해야함.

 

 

 - Source code link

github.com/Bibidi/Algorithms/blob/master/boj/boj%201194.cpp

'컴퓨터공학 > Problem Solving' 카테고리의 다른 글

백준 4803  (0) 2021.01.17
백준 11997  (0) 2021.01.17
백준 1327  (0) 2021.01.15
백준 1405  (0) 2021.01.15
백준 10265  (0) 2021.01.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함