Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 14889. ์Šคํƒ€ํŠธ์™€ ๋งํฌ

deo2kim 2020. 11. 14. 09:18
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • S3 | ๋ธŒ๋ฃจํŠธํฌ์Šค, ๋ฐฑํŠธ๋ž˜ํ‚น

์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ AํŒ€์„ ๊ตฌํ•œ๋‹ค.

  • ์ „์ฒด ๋ฉค๋ฒ„์˜ ์ ˆ๋ฐ˜์ด ๋  ๋•Œ๊นŒ์ง€ ํŒ€์„ ๊ตฌ์„ฑ

  • set์œผ๋กœ ๊ตฌํ•œ๋‹ค. ( ๊ต์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•ด์„œ BํŒ€์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด )

๋‘ ํŒ€์„ ๊ตฌํ–ˆ์œผ๋ฉด ๊ฐ ํŒ€์˜ ๋ชจ๋“  ์กฐํ•ฉ์„ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์„œ ๊ตฌํ•ด์ค€๋‹ค

  • ์ด๋ฒˆ์—๋Š” ์ฝค๋น„๋„ค์ด์…˜ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • ํ…Œ์ด๋ธ”์˜ ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•ด์ฃผ๊ณ 

  • ๋‘ ํŒ€์˜ ์ดํ•ฉ์„ ๋นผ์ค€๋’ค ์ ˆ๋Œ€๊ฐ’์„ ์”Œ์›Œ์„œ ์ฐจ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.

์ตœ์†Œ๊ฐ’์œผ๋กœ ๋‹ต์„ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.

 

๐Ÿ’จ ํŒ€์„ ๊ตฌํ•  ๋•Œ ์ฝค๋น„๋„ค์ด์…˜์„ ์“ฐ์ง€ ์•Š์€ ์ด์œ ๋Š” ์ฝค๋น„๋„ค์ด์…˜์€ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ

์ „์ฒด ํšŒ์› [0, 1, 2, 3] ์ผ ๋•Œ

A ํŒ€์ด 0,1 BํŒ€์ด 1,2 ์ธ ๊ฒฝ์šฐ์™€

A ํŒ€์ด 2,3 BํŒ€์ด 0,1 ์ธ ๊ฒฝ์šฐ์˜ ๋‹ต์€ ๊ฐ™์ง€๋งŒ

์ฝค๋น„๋„ค์ด์…˜์€ ์ด ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋ฏ€๋กœ ๋น„ํšจ์œจ์ 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

from itertools import combinations


# ํŒ€ ๋‚˜๋ˆ„๊ธฐ - set ์ด์šฉ
def split_team(a_team, idx):
    global answer
    if len(a_team) == len(all_team) // 2:
        b_team = all_team - a_team
        answer = min(answer, abs(sum_stat(a_team) - sum_stat(b_team)))
        return

    for i in range(idx, len(all_team)):
        a_team.add(i)
        split_team(a_team, i + 1)
        a_team.remove(i)


# ํŒ€ ์Šคํƒฏ ๊ณ„์‚ฐํ•˜๊ธฐ
def sum_stat(team):
    stat = 0
    for player1, player2 in combinations(team, 2):
        stat += table[player1][player2] + table[player2][player1]

    return stat


if __name__ == '__main__':
    N = int(input())
    table = [list(map(int, input().split())) for _ in range(N)]
    all_team = set(i for i in range(N))
    answer = float('inf')

    split_team(set(), 0)

    print(answer)
 

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/14889

 

14889๋ฒˆ: ์Šคํƒ€ํŠธ์™€ ๋งํฌ

์˜ˆ์ œ 2์˜ ๊ฒฝ์šฐ์— (1, 3, 6), (2, 4, 5)๋กœ ํŒ€์„ ๋‚˜๋ˆ„๋ฉด ๋˜๊ณ , ์˜ˆ์ œ 3์˜ ๊ฒฝ์šฐ์—๋Š” (1, 2, 4, 5), (3, 6, 7, 8)๋กœ ํŒ€์„ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค.

www.acmicpc.net

 

 

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0