본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 14592번 : 2017 아주대학교 프로그래밍 경시대회 (Small)

by 빛밤하늘 2021. 7. 4.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

14592번: 2017 아주대학교 프로그래밍 경시대회 (Small)

아주대학교 프로그래밍 경시대회(Ajou Programming Contest, APC)는 2009년 제1회를 시작으로 2014년 제6회까지 개최된 아주대학교 학생들을 위한 프로그래밍 경시대회이다. 2017년, 다른 학교에서 활발히

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 첫 번째 줄에 참가자의 수를 나타내는 자연수 N을 입력합니다.
# 1 <= N <= 3
# 정수형으로 변환합니다.
N = int(stdin.readline())
# 각 참가자들의 정보들을 저장할 리스트 변수를 선언합니다.
participants_infos = [None] * N

# 참가자의 수 N만큼 반복합니다.
for participants_idx in range(N):
    # 참가자의 정보들인 참가자의 점수 Si, 제출 횟수 Ci,
    # 마지막으로 점수를 획득한 문제의 업로드 시간 Li를 공백으로 구분해 입력합니다.
    # 0 <= Si <= 620
    # 0 <= Ci <= 50
    # 0 <= Li <= 179
    # 각각 정수형으로 변환하고 리스트 변수에 넣어줍니다.
    participant_info = list(map(int, stdin.readline().split(' ')))
    # 참가자의 번호를 participant_info에 넣어줍니다.
    participant_info.append(participants_idx + 1)

    # participants_infos에 현재 참가자의 정보들인 participant_info를 넣어줍니다.
    participants_infos[participants_idx] = participant_info

# participants_infos의 값들을 순위를 정하는 기준으로 정렬합니다.
# 첫 번째 기준은 총 점수가 높은 참가자가 더 높은 순위인 내림차순,
# 두 번째 기준은 제출 횟수가 적은 참가자가 더 높은 순위인 오름차순,
# 세 번째 기준은 마지막으로 점수를 획득한 문제의 업로드 시간이 빠른 참가자가 더 높은 순위인 오름차순으로 정렬해줍니다.
participants_infos.sort(key=lambda info: (-info[0], info[1], info[2]))

# 가장 높은 순위의 참가자인 participants_infos의 맨 앞에 있는 참가자의 번호를 출력합니다.
print(participants_infos[0][3])

결과

 

맞았습니다 결과를 보고나서 다른 사람들의 파이썬 결과들과 비교해보니

실행 시간이 64ms인 코드를 제출한 사람들도 있었습니다.

그런 코드들을 보고 어떻게 더 빠른 실행 시간을 낼 수 있는지 공부해봐야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글