[삼성] 17779 게리멘더링 2

2019. 10. 24. 17:14알고리즘/백준

삼성전자 기출문제로, 경계선에 따라 구역을 나눌 수 있느냐를 물어보고 있다.

 

1. 모든 점들을 기준점으로 탐색한다 O(N^2)

2. 기준점을 기준으로 경계선의 꼭짓점이 맵 안에 존재하는지 확인한다 O(N^2)

3. 경계선이 성립이 된다면 그 구간을 그룹 5로 초기화한다 O(N)

4. 지도의 각 끝점에서 bfs를 돌리면서 구간선까지 탐색을 한다 O(N^2)

5. 최솟값을 구한다 O(상수)

 

위 시간복잡도는 나올 수 없다. 다만 계산을 편하게 하기 위해 다음과 같이 설정했고, 총 시간복잡도는

O = O(N^2)*O(N^2)*(O(N)+O(N^2)+O(상수)) = O(N^6)

N제한이 20이므로 1억 이하므로 해결할 수 있다

 

문제: https://www.acmicpc.net/problem/17779

깃허브주소: https://github.com/surinoel/boj/blob/master/17779.cpp

 

 

'알고리즘 > 백준' 카테고리의 다른 글

[삼성] 17780 새로운 게임  (0) 2019.10.28
[삼성] 17822 원판돌리기  (0) 2019.10.26
16933 벽 부수고 이동하기 3  (0) 2019.10.22
1652 누울 자리를 찾아라  (0) 2019.10.22
16496 큰 수 만들기  (0) 2019.10.21