320x100
문제 : https://programmers.co.kr/learn/courses/30/lessons/81302
BFS로 풀었다.
하나의 대기실을 탐색하면서 people 좌표를 찾으면 BFS를 돌린다.
탐색하면서 테이블을 만나면 계속 탐색, 파티션을 만나면 탐색 중지, 또다른 people을 만나면 거리두기 실패임을 알 수 있다.
만일 탐색하면서 3이상의 거리가 된다면 거리두기를 성공적으로 하고 있으므로 BFS 탐색을 중지해도 된다.
시간복잡도는 하나의 people 좌표에서 BFS를 돌리는데 people 좌표 탐색 O(NM). 한 번의 BFS 탐색시 O(NM)이 소요되므로 총 O((NM)^2). 하지만 거리두기 2 이상은 탐색할 필요가 없으므로 BFS 탐색 시간복잡도는 상하좌우 4방향으로 2번만 탐색하면 되니까 최대 4^2 = 16, 상수 시간복잡도를 가진다고도 볼 수 있다.
따라서 O(NM)으로 봐도 무방하다.
320x100
'알고리즘 문제 > Programmerse' 카테고리의 다른 글
[Programmers] 타겟 넘버 (0) | 2021.08.05 |
---|---|
[Programmers] 하노이의 탑 (0) | 2021.07.06 |
[Programmers] 단속카메라 (0) | 2021.06.16 |
[Programmers] 섬 연결하기 (0) | 2021.06.14 |
[Programmers][2020 카카오 인턴십] 보석 쇼핑 (0) | 2021.06.13 |
댓글