문제
https://www.acmicpc.net/problem/28215
입력 예제
5 2
1 5
3 0
3 3
6 12
8 9
4 2
0 0
0 5
5 0
5 5
출력 예제
5
5
문제 풀이
- 조합으로 k개의 집에 대피소 설치
- 각 집에서 최소거리가 걸리는 대피소 찾기
- 가장 가까운 대피소에서 멀리 떨어진 거리 찾기
- 먼 거리중 최소거리 걸리는 대피소 찾은 후 출력
코드
from itertools import combinations
n,k = map(int,input().split())
house = []
for _ in range(n):
x,y = map(int,input().split())
house.append([x,y])
# 모든 집과의 거리가 가장 가까운 대피소 찾기
list = [[] for _ in range(n)]
result = float('INF')
for c in combinations(house, k):
tmp = []
max_val = 0
for h in range(n):
home = house[h]
min_val = 99999999
for cc in c:
distance = []
tmp_val = abs(home[0] - cc[0]) + abs(home[1] - cc[1])
min_val = min(min_val, tmp_val)
max_val = max(min_val, max_val)
result = min(max_val, result)
print(result)
값을 바로바로 찾지 않고 계속해서 배열을 선언해서 문제를 처리했는데, 이런 식으로 바로 값을 비교하는 게 더 간단하다.
'Algorithm > Broute Force' 카테고리의 다른 글
| [Java] SWEA 1959번 두 개의 숫자열 (0) | 2023.06.29 |
|---|---|
| [Java] SWEA 1974번 스도쿠 검증 (0) | 2023.06.29 |
| [Python] 백준 19532번 수학은 비대면강의입니다 (0) | 2023.03.27 |
| [Python] 1436번 영화감독 숌 (0) | 2023.02.20 |
| [Python] 백준 7568번 덩치 (1) | 2023.02.20 |