본문 바로가기
코딩테스트 문제풀이(Python)

백준 5576번 문제풀이 (파이썬)

by chanfficial 2022. 5. 17.

5576. 콘테스트

 

 

최근 온라인에서의 프로그래밍 콘테스트가 열렸다. W 대학과 K 대학의 컴퓨터 클럽은 이전부터 라이벌 관계에있어,이 콘테스트를 이용하여 양자의 우열을 정하자라는 것이되었다.
이번이 두 대학에서 모두 10 명씩이 콘테스트에 참여했다. 긴 논의 끝에 참가한 10 명 중 득점이 높은 사람에서 3 명의 점수를 합산하여 대학의 득점으로하기로 했다.
W 대학 및 K 대학 참가자의 점수 데이터가 주어진다. 이때, 각각의 대학의 점수를 계산하는 프로그램을 작성하라.

 

 

 

입력 : 입력은 20 행으로 구성된다. 1 번째 줄부터 10 번째 줄에는 W 대학의 각 참가자의 점수를 나타내는 정수가 11 번째 줄부터 20 번째 줄에는 K 대학의 각 참가자의 점수를 나타내는 정수가 적혀있다. 이 정수는 모두 0 이상 100 이하이다.

출력 : W 대학 점수와 K 대학의 점수를 순서대로 공백으로 구분하여 출력하라.

 

 

ex)

입력 :

23
23
20
15
15
14
13
9
7
6
25
19
17
17
16
13
12
11
9
5

출력 :

66 61

 

 

 

 

 

풀이

wHigh = 0
kHigh = 0
w = []

for i in range(20):
    w.append(int(input()))

k = w[10:]
w = w[:10]
w.sort(reverse=True)
k.sort(reverse=True) 

for i in range(3):
    wHigh += w[i]
    kHigh += k[i]

print(wHigh, kHigh)

- 일단 입력받은 20개의 점수를 모두 w 대학의 점수 리스트에 추가해준 다음, 슬라이스를 이용하여 0~9 인덱스 까지는 w대학, 10~19 인덱스 까지는 k대학으로 나눠서 점수가 들어있는 리스트를 만들었다.

(이때 w대학의 리스트를 생성하는 슬라이스를 먼저 실행하면 0~9 인덱스까지만 잘린채로 w대학 리스트가 변경되어, 후에 만들어진 k대학의 리스트는 빈 리스트가 되므로 반드시 k대학의 리스트를 생성하는 슬라이스를 먼저 실행해야 한다.)

그런 다음 sort(reverse=True)를 사용하여 w대학과 k대학의 리스트를 내림차순으로 정렬해주었다.

 

이제 각각의 대학 리스트들은 점수가 높은 순서부터 정렬되어 있기 때문에 가장 높은 3명의 점수를 합산하기 위해,

0에서 2번째 까지의 인덱스를 모두 더하여 각각 wHigh, kHigh라는 이름의 변수에 저장해 주었다.

 

w대학과 k대학 리스트에서 각각 0에서 2번째 까지의 인덱스를 더한 값인 wHigh와 kHigh가 그 대학의 점수가 되므로 이를 출력하여 답을 구했다.