티스토리 뷰

알고리즘

<baekjoon> 성곽

koyuchang 2020. 9. 14. 17:26

풀이

이 문제는 BFS탐색과 비트마스킹을 실행해줘야하는 문제다.

1. bfs탐색을 돌면서벽이 아닌 경우를 체크하고 방을 움직여야한다. 그럴 수 있는 조건은(move & (1 << k)) == 0)이다.

연산을 통해 해당 비트가 0이면 그 방향으로는 벽이 없고 뚤려있다는 것을 의미하므로 이동이 가능하다.

2. bfs를 한번돌때마다 방의 개수를 구할 수 있다.

3. bfs내에서 칸을 옮길때마다 roomChk변수를 ++해준다. bfs가 한번끝날때마다 기존의 room2변수랑 비교하여 더 크면 room2변수에 더 큰값을 넣어주고 roomChk변수는 초기화해준다.

4. 그 이후에는 벽을 부수고 이동하여 최대로 큰 방의 크기를 구하여야한다. 

5. (map[i][j] & bit) != 0) 일경우는 벽일 경우일때다 즉, 벽이면 그 벽을 부수고 이동하여 BFS탐색을 실시한다. 그리고 bfs가 끝났을 때 다시 벽을 복구해준다.

 

코드

'알고리즘' 카테고리의 다른 글

<baekjoon> 1719 탈출  (0) 2020.09.17
<swea> 수의 새로운 연산  (0) 2020.09.16
<baekjoon> 탈출  (0) 2020.09.13
<baekjoon> 섬의개수  (0) 2020.09.12
<baekjoon> 색종이 만들기  (0) 2020.09.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함