ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฉ ๋ธ๋ฃจํธํฌ์ค, ๋ฐฑํธ๋ํน
thinking
1. ํ์ด์ฌ itertools์ ์กฐํฉ ๊ธฐ๋ฅ์ ์ฌ์ฉํด ๋ง๋ค์ ์๋ ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ณ
2. for๋ฌธ์ ๋๋ฉด์ ํด๋น ๊ฒฝ์ฐ์ ์์ ํ๋ง ๋๋ฉด์ ๋๋จธ์ง ์ด์ ๊ฐ์ ๋ํจ
ex. (1,2,3)์ ๊ฒฝ์ฐ๋ผ๋ฉด 1,2,3ํ์ ๋๋ฉฐ 1ํ์ผ ๋๋ 2,3์ด์ ๊ฐ,
2ํ์ผ ๋๋ 1,3์ด์ ๊ฐ, 3ํ์ผ ๋๋ 1,2์ด์ ๊ฐ๋ง ๋ํ๋ฉด ํ์ ๋ฅ๋ ฅ์น๋ฅผ ๊ตฌํ ์ ์๋ค.
3. sumA, sumB ๊ตฌํ ๋ค์ abs๋ก ์ฐจ์ด ๊ตฌํด์ ๊ฐ์ฅ ์ต์๊ฐ์ด ๋ต
โ ๋ฌธ์ ๋ (1,2,3)-(4,5,6) / (1,4,5)-(2,3,6) ์ด๋ฐ์์ผ๋ก ์ง์ ์ด๋ฃจ์ด์ผํ๋๋ฐ ์ด๊ฑธ ์ด๋ป๊ฒ ๋งค์นญ์ํค๋ ๊ฒ์ธ๊ฐ์๋ค.
๊ทผ๋ฐ ๋๋ฐ์ธ๊ฒ itertools๋ก ์กฐํฉ ๊ตฌํ๋ฉด ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์์์ ์์๋๋ก ์กฐํฉ์ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํด์ ๋งค์นญ์ด ๋๋ค.
๊ทธ๋์ ์ ๋ฐ์ผ๋ก ๋๋๋ค์ ์ ์น์ ์ ์์์๋ถํฐ, ๋ท์น์ ์ ๋ค์์๋ถํฐ ์ธ๋ฑ์ค๋ฅผ ํ ๋นํด์ฃผ์๋ค
์ฝ๋
from itertools import combinations
# Sij ํฉ ๊ตฌํ๋ ํจ์
def subsum(tp1, tp2):
sumA, sumB = 0, 0
for i in tp1:
for j in tp1:
sumA += S[i][j]
for i in tp2:
for j in tp2:
sumB += S[i][j]
return abs(sumA-sumB)
N = int(input())
S = [list(map(int, input().split())) for _ in range(N)] # Sij: 1~100
comb_lst = list(combinations(range(N), N//2))
res = 987654321
for i in range(len(comb_lst)//2):
tmp = subsum(comb_lst[i], comb_lst[len(comb_lst)-1-i])
if tmp < res:
res = tmp
print(res)
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1107. ๋ฆฌ๋ชจ์ปจ / python ํ์ด์ฌ (0) | 2021.06.03 |
---|---|
[๋ฐฑ์ค] 7576. ํ ๋งํ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 5430. AC / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 1931๋ฒ. ํ์์ค ๋ฐฐ์ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 1780. ์ข ์ด์ ๊ฐ์ / python ํ์ด์ฌ (0) | 2021.06.02 |
- ๊ธฐ์ง๊ตญ์ค์น
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ผ์ฑ์ฝํ
- merge ์๋ฌ
- 21609 ์์ด ์คํ๊ต
- ๋ณด์์ผํ
- ์๊ณ ๋ฆฌ์ฆ
- ์ผ์ฑ๊ธฐ์ถ
- ๋ธ๋ฃจํธํฌ์ค
- dp
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- swea
- ๋ฐฑ์ค
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- BFS
- git ๋ฏธ๋ฌ๋ง
- ์์ด๋๋ง์๊ธฐ
- ํ์ด์ฌ
- react
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- merge์๋ฌ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- Python
- 2018 ์นด์นด์ค ๊ณต์ฑ
- dfs
- Total
- Today
- Yesterday