[백준] 2535번 아시아 정보올림피아드

거북이·2023년 1월 8일
0

백준[실버5]

목록 보기
78/114
post-thumbnail

💡문제접근

일단 대회에 참가하는 학생들을 점수를 기준으로 내림차순 정렬을 적용한 다음 경우를 나누어서 생각해보았다.
만약 금메달 수상자와 은메달 수상자의 국가 번호가 동일하다면 첫 번째와 두 번째를 제외한 그 다음 학생부터 조건을 비교하여 동메달 수상자를 출력한다.
만약 금메달 수상자와 은메달 수상자의 국가 번호가 다르다면 세 번째 학생이 그대로 와도 무방하므로 세 번째 학생을 동메달 수상자로 지정하여 출력한다.

💡코드(메모리 : 30616KB, 시간 : 36ms)

N = int(input())
olympiad = []
for _ in range(N):
    information = list(map(int, input().split()))
    olympiad.append(information)

olympiad.sort(key = lambda x : (-x[2]))
print(olympiad[0][0], olympiad[0][1])   # 금메달 수상자
print(olympiad[1][0], olympiad[1][1])   # 은메달 수상자
if olympiad[0][0] == olympiad[1][0]:    # 만약 금메달 수상자와 은메달 수상자의 국가 번호가 같다면?
    for i in range(2, N):
        if olympiad[i][0] == olympiad[0][0]:
            continue
        else:
            print(olympiad[i][0], olympiad[i][1])
            break
else:                                   # 만약 금메달 수상자와 은메달 수상자의 국가 번호가 다르다면?
    print(olympiad[2][0], olympiad[2][1])

💡소요시간 : 15m

0개의 댓글