소스 코드
def find(idx,start):
global res
# 스타트 팀이 다 채워졌으면
if len(start) == n//2:
# 링크 팀 채우기
link = []
for e in range(n):
if e not in start:
link.append(e)
# 능력치 합계
start_score = 0
for r in range(n//2):
for rr in range(n//2):
start_score += board[start[r]][start[rr]]
link_score = 0
for t in range(n//2):
for tt in range(n//2):
link_score += board[link[t]][link[tt]]
if abs(start_score-link_score) < res:
res = abs(start_score-link_score)
return
for w in range(idx,n):
find(w+1,start+[w])
return
n = int(input())
board = [list(map(int,input().split())) for _ in range(n)]
res = 50000
for q in range(n//2+1):
# 처음 값을 추가
find(q+1,[q])
print(res)
해결 방법
느낀 점
깔끔하게 작성하지 못해서 아쉽고
다른 사람들의 코드를 보니 속도가 훨씬 빨랐음. 가지치기를 제대로 못한듯 하다.
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 평범한 배낭 - PYTHON #12865 (0) | 2021.11.15 |
---|---|
[BOJ/백준 코딩] 물건 팔기 - PYTHON #1487 (0) | 2021.10.14 |
[BOJ/백준 코딩] 암호 만들기 - PYTHON #1759 (0) | 2021.10.07 |
[BOJ/백준 코딩] 부분수열의 합 - PYTHON #1182 (0) | 2021.10.06 |
[BOJ/백준 코딩] 인구 이동 - PYTHON #16234 (0) | 2021.02.27 |