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
- 무시하기
- JSON 분리
- JSONArray 분할
- multi update
- 성능개선
- batchInsert
- JSONObject 분할
- 문자형을 날짜형으로
- jar 소스보기
- 날짜형을 문자형으로
- org.json
- 마이바티스 트랜잭션
- 스테이지에 올리기
- JobExecutionAlreadyRunningException
- 스프링 웹플럭스
- spring reactive programming
- 스프링 배치 공식문서
- Meta Table
- nonblocking
- 스프링 배치 메타 테이블
- str_to_date
- git stage
- 마리아디비
- 스프링 리액티브 프로그래밍
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- JSON 분할
- 폐기하기
- JSON 분해
- date_format
- spring webflux
Archives
- Today
- Total
ebson
boj.kr/17471 게리멘더링 (gold4) 파이썬 풀이 본문
1. 첫번째 선거구의 조합을 모두 추출하고 아래를 반복
1.1. 첫번째 선거구의 조합과 그 외 나머지 선거구의 조합을 bfs, dfs 방식 중 하나로 순회해 가능한 조합인지 검사
1.2. 가능한 조합이라면 두 선거구의 인구수 차를 저장
2. 두 선거구의 인구수 차 중 최소값을 출력, 가능한 조합이 없으면 -1을 출력
N = int(input())
nums = [0] + list(map(int, input().split()))
adj = [0] + []
for _ in range(N):
adj.append(list(map(int, input().split()))[1:])
from collections import deque
def bfs(nodes):
dq = deque()
dq.append(nodes[0])
nodes.remove(nodes[0])
while dq:
cur = dq.popleft()
for nxt in adj[cur]:
if nxt in nodes:
dq.append(nxt)
nodes.remove(nxt)
return len(nodes) == 0
import sys
sys.setrecursionlimit(10**6)
def dfs(nodes, node):
cur = node
nodes.remove(cur)
for nxt in adj[cur]:
if nxt in nodes:
dfs(nodes, nxt)
return len(nodes) == 0
from itertools import combinations
diff = []
nodes = [x for x in range(1, N+1)]
for i in range(1, N):
for combi in combinations(nodes, i):
tot = 0
if dfs(list(combi), combi[0]): #bfs(list(combi)):
rest = [x for x in nodes if x not in list(combi)]
if dfs(rest, rest[0]): #bfs(rest):
for c in list(combi):
tot += nums[c]
diff.append(abs(tot - (sum(nums)-tot)))
if len(diff) == 0:
print(-1)
else:
print(min(diff))
bfs, dfs 방식 모두 가능하나 PyPy3 으로 제출 시에는 메모리 초과하지 않으려면 bfs 방식을 사용해야 한다.
'ALGORITHM STUDY WITH PYTHON > BFS | DFS' 카테고리의 다른 글
boj.kr/2667 단지번호붙이기 (silver1) 자바 풀이 (0) | 2024.06.06 |
---|---|
boj.kr/2178 미로 탐색 (silver1) 자바 풀이 (0) | 2024.06.01 |
boj.kr/2638 치즈 (gold3) 파이썬 풀이 (0) | 2023.05.05 |
boj.kr/1325 효율적인 해킹 (silver1) 파이썬 풀이 (0) | 2023.05.04 |
boj.kr/1926 그림 (silver1) 파이썬 풀이 (0) | 2023.05.04 |
Comments