백준(Python) 풀이/그리디 알고리즘

백준(Python) 20044번 Project Teams 풀이

개발윗미 2021. 12. 19. 18:26

Python으로 구현한 20044번 Project Teams 문제 풀이입니다.

 

https://www.acmicpc.net/problem/20044

 

20044번: Project Teams

입력은 표준입력을 사용한다. 입력의 첫 번째 행에는 팀 수를 나타내는 양의 정수 n(1 ≤ n ≤ 5,000)이 주어진다. 그 다음 행에 학생 si 의 코딩 역량 w(si)를 나타내는 2n개의 양의 정수가 공백으로

www.acmicpc.net


n = int(input())
data = list(map(int, input().split()))
data.sort()

left = 0
right = len(data) - 1
 
min_value = 1e9
while left < right :
  temp = data[left] + data[right]
  min_value = min(min_value, temp)
  left += 1
  right -= 1

print(min_value)

 

1. 공정성을 위해 data 리스트를 오름차순으로 정렬한다.

 

2. 가장 먼저 제일 왼쪽 값과 오른쪽 값을 더하기 위해 left는 0으로, right는 가장 마지막 인덱스로 초기화한다.

 

3. 반복문을 통해 left인덱스 값과 right인덱스 값을 더하여 temp에 저장한 뒤, min_value와 비교하여 더 작은 값을

 

   min_value에 갱신한다.

 

4. 그 후 left는 1 증가시키고, right는 1 감소시킨다.

 

5. left의 값이 right 값보다 커지게 되면 반복문을 종료한 뒤 최종적으로 min_value 값을 출력한다.