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
- jar 소스보기
- str_to_date
- nonblocking
- JSONArray 분할
- 마이바티스 트랜잭션
- 스프링 배치 공식문서
- date_format
- Meta Table
- 스테이지에 올리기
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- 문자형을 날짜형으로
- org.json
- JobExecutionAlreadyRunningException
- multi update
- JSON 분해
- 스프링 배치 메타 테이블
- 무시하기
- 스프링 웹플럭스
- 폐기하기
- spring webflux
- 스프링 리액티브 프로그래밍
- 성능개선
- JSON 분리
- 마리아디비
- git stage
- JSON 분할
- batchInsert
- 날짜형을 문자형으로
- JSONObject 분할
- spring reactive programming
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