[그리디 알고리즘] Project Teams

2022. 10. 10. 17:18· 알고리즘
목차
  1. Project Teams(20044)

Project Teams(20044)

 


 

[문제]

코딩 프로젝트 수업을 가르치는 수찬이는 프로젝트 팀을 가능하면 공정하게 구성하려고 한다. 프로젝트 팀 하나는 두 명의 학생으로 구성되는데, 각 학생들의 코딩 역량은 모두 다르다. 각 학생은 한 팀의 팀원이어야 한다. 공정성을 높이기 위해 수찬이는 팀원 코딩 역량의 합을 최대한 일정하게 유지하려고 한다. 학생들이 코딩 역량이 주어졌을 때 수찬이가 팀을 구성하는데 도움이 되는 프로그램을 작성하라.
문제를 간단하게 하기 위해, 학생 수는 2n이라 가정하자 (n은 양의 정수). 각 학생 si의 코딩 역량은 양의 정수 w(si)로 나타내면 한 i번째 팀 Gi의 코딩 역량은 w(Gi) = ∑s∈Giw(s)로 나타낼 수 있다. 작성할 프로그램 목적은 Sm = min{w(Gi) | 1 ≤ i ≤ n}이 최대화되도록 n개의 팀 G1, G2, …, Gn 을 구성하고 이때 Sm을 출력하는 것이다.
예를 들어, 학생들의 코딩 역량이 {1, 7, 5, 8}로 주어졌다면 (8, 1), (7, 5)로 2개의 조를 짤 수 있으며 프로그램은 9를 출력해야 한다.

[입력]

입력은 표준입력을 사용한다. 입력의 첫 번째 행에는 팀 수를 나타내는 양의 정수 
n(1 ≤ n ≤ 5,000)이 주어진다. 그 다음 행에 학생 si의 코딩 역량 w(si)를 나타내는 2n개의 양의 정수가 공백으로 분리되어 주어진다 (1 ≤ w(si) ≤ 100,000). 학생들의 코딩 역량은 모두 다르다. 즉, i ≠ j이면 w(si) ≠w(sj)이다.

[출력]

출력은 표준출력을 사용한다. 표준출력 한 행에 Sm을 출력한다.

[입력 예시]

2
1 7 5 8

[출력 예시]

9

[내 풀이]

n=int(input())  #팀 수
w=list(map(int, input().split())) #코딩 역량

w.sort()    #오름차순 정렬

s=list()    #가장 작은 역량 합

for i in range(n):
    s.append(w[i]+w[2*n-i-1])

print(min(s))

 


[해설]

 

문제와 입력에 수식이 많아 이해하는 데 시간이 꽤 걸렸다.

단순하게 정리하자면,

팀 개수 n, 각 학생 Si, 역량 w(Si), i 번째 팀 Gi, 팀 별 역량 w(Gi) = ∑s∈Giw(s) (개인 역량 합) 이고

목적은 팀 별 역량 합 중 가장 작은 역량 합(Sm) 을 구하는 것이다.팀원이 2명이므로 역량이 가장 작은 학생+역량이 가장 높은 학생 조합이 팀원 역량 합을 공정하게 유지하는 데 기여한다.  

'알고리즘' 카테고리의 다른 글

[그리디 알고리즘] 등수 매기기  (0) 2022.11.12
[그리디 알고리즘] YONSEI TOTO  (0) 2022.11.09
[그리디 알고리즘] 걷기  (0) 2022.10.10
[그리디 알고리즘] 카약과 강풍  (0) 2022.10.02
[그리디 알고리즘] 거스름돈  (0) 2022.10.02
  1. Project Teams(20044)
'알고리즘' 카테고리의 다른 글
  • [그리디 알고리즘] 등수 매기기
  • [그리디 알고리즘] YONSEI TOTO
  • [그리디 알고리즘] 걷기
  • [그리디 알고리즘] 카약과 강풍
오승미
오승미
오승미
프로그래밍 공부
오승미
전체
오늘
어제
  • 분류 전체보기 (114)
    • 개발 (31)
      • 배포 (2)
      • KAFKA (3)
      • MSA (11)
      • 리눅스 (2)
      • Spring (1)
      • FE (0)
    • SQL (6)
    • 알고리즘 (50)
    • JAVA (14)
    • 개발 서적 리뷰 (1)
      • Clean Code (1)
      • 실전 카프카 개발부터 운영까지 (0)
    • CS (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
오승미
[그리디 알고리즘] Project Teams
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.