Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Meta Table
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- spring webflux
- JSONObject 분할
- JSON 분해
- 스테이지에 올리기
- 마리아디비
- org.json
- git stage
- 스프링 배치 메타 테이블
- spring reactive programming
- 폐기하기
- date_format
- 스프링 배치 공식문서
- str_to_date
- nonblocking
- 성능개선
- 스프링 웹플럭스
- 무시하기
- JSON 분할
- batchInsert
- JSONArray 분할
- JobExecutionAlreadyRunningException
- 문자형을 날짜형으로
- 날짜형을 문자형으로
- 스프링 리액티브 프로그래밍
- multi update
- 마이바티스 트랜잭션
- jar 소스보기
- JSON 분리
Archives
- Today
- Total
ebson
boj.kr/15686 치킨 배달 (gold5) 파이썬 풀이 본문
1. 집의 좌표들과 치킨집 좌표들을 각각 리스트에 저장
2. combinations를 사용해 치킨집 좌표 리스트에서 추출한 M개의 치킨집 좌표들을 순회하면서 아래(3,4,5)를 반복
3. 집의 좌표 목록을 순회
4. 집에서 치킨집까지 거리를 계산하고 최소 치킨거리를 저장
5. 모든 집들의 최소 치킨거리를 더한 값을 최소 치킨거리 리스트에 저장
6. 최소 치킨거리 리스트에서 최소값을 출력
N, M = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(N)]
chickens = []
homes = []
for y in range(N):
for x in range(N):
if board[y][x] == 2:
chickens.append((y, x))
if board[y][x] == 1:
homes.append((y, x))
def get_d(y1, x2, y2, x1):
return abs(y2-y1) + abs(x2-x1)
from itertools import combinations
chicken_d_sum_list = []
for combi in combinations(chickens, M):
chicken_d_sum = 0
for (hy, hx) in homes:
min_chicken_d = 1e9
for (cy, cx) in combi:
min_chicken_d = min(min_chicken_d, get_d(hy, hx, cy, cx))
chicken_d_sum += min_chicken_d
chicken_d_sum_list.append(chicken_d_sum)
print(min(chicken_d_sum_list))
최단거리를 구하기 위해 bfs보다 좌표연산하는 것이 더 빠를 수 있다.
'ALGORITHM STUDY WITH PYTHON > Bruteforce' 카테고리의 다른 글
boj.kr/1080 체스판 다시 칠하기 (silver4) 자바 풀이 (0) | 2024.06.01 |
---|---|
boj.kr/1080 체스판 다시 칠하기 (silver4) 파이썬 풀이 (0) | 2024.05.25 |
boj.kr/2468 안전 영역 (silver1) 파이썬 풀이 (0) | 2023.04.21 |
boj.kr/14889 스타트와 링크 (silver2) 파이썬 풀이 (0) | 2023.04.20 |
boj.kr/14888 연산자 끼워넣기 (silver1) 파이썬 풀이 (0) | 2023.04.20 |
Comments