deo2kim
λ§žμ™œν‹€
deo2kim
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

λ°˜μ‘ν˜•
hELLO Β· Designed By μ •μƒμš°.
deo2kim

λ§žμ™œν‹€

[python] λ°±μ€€ - 14889. μŠ€νƒ€νŠΈμ™€ 링크
Algorithm Problem/Python

[python] λ°±μ€€ - 14889. μŠ€νƒ€νŠΈμ™€ 링크

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

 

 

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Algorithm Problem > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[python] λ°±μ€€ - 14500. ν…ŒνŠΈλ‘œλ―Έλ…Έ (μ‚Όμ„± SW μ—­λŸ‰ ν…ŒμŠ€νŠΈ 기좜 문제)  (0) 2020.11.16
[python] λ°±μ€€ - 1261. μ•Œκ³ μŠ€νŒŸ  (0) 2020.11.15
[python] SWEA - 10726. μ΄μ§„μˆ˜ ν‘œν˜„  (2) 2020.11.13
[python] λ°±μ€€ - 14501. 퇴사  (0) 2020.11.11
[python] λ°±μ€€ - 14235. 크리슀마슀 μ„ λ¬Ό  (0) 2020.11.10
    'Algorithm Problem/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [python] λ°±μ€€ - 14500. ν…ŒνŠΈλ‘œλ―Έλ…Έ (μ‚Όμ„± SW μ—­λŸ‰ ν…ŒμŠ€νŠΈ 기좜 문제)
    • [python] λ°±μ€€ - 1261. μ•Œκ³ μŠ€νŒŸ
    • [python] SWEA - 10726. μ΄μ§„μˆ˜ ν‘œν˜„
    • [python] λ°±μ€€ - 14501. 퇴사
    deo2kim
    deo2kim
    μ½”λ”© κΈ°λ‘ν•˜κΈ°

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”