백준 10814번: 나이순 정렬 질문

나이순 정렬 문제를 병합 정렬로 풀어보고 있습니다.
시간 초과 같은게 아니라 그냥 틀렸습니다로 나오는 걸 보면
출력이나 정렬 자체가 잘못된 모양인데 어느 부분을 고쳐야할지 도와주세요.

import sys

def merge(mixedlist, left, mid, right, key):
    Lidx, Ridx = left, mid+1
    sortlist = []
    while Lidx <= mid and Ridx <= right:
        if mixedlist[Lidx][key] <= mixedlist[Ridx][key]:
            sortlist.append(mixedlist[Lidx])
            Lidx += 1
        else:
            sortlist.append(mixedlist[Ridx])
            Ridx += 1
    if(Lidx > mid):
        for i in range(Ridx, right+1):
            sortlist.append(mixedlist[i])
    else:
        for i in range(Lidx, mid+1):
            sortlist.append(mixedlist[i])
    mixedlist[left:right+1] = sortlist

def mergesort(mixedlist, left, right, key):
    if left < right:
        mid = (left + right) // 2
        mergesort(mixedlist, left, mid, key)
        mergesort(mixedlist, mid+1, right, key)
        merge(mixedlist, left, mid, right, key)

N = int(sys.stdin.readline())
mixedlist = []
for _ in range(N):
    age, name = map(str, sys.stdin.readline().split())
    mixedlist.append((int(age), name))
mergesort(mixedlist, 0, N-1, 1)
mergesort(mixedlist, 0, N-1, 0)
for i in range(N):
    print(" ".join(map(str, mixedlist[i])))

혹시 예제는 통과하나요?

예제를 입력하면 제대로 통과합니다.
출력도 나이, 이름 순으로 출력하고요.

문제 해결했습니다.
나이가 같으면 가입 순으로 출력인데
나이가 같으면 사전 순으로 출력이라고 이해해서 결과가 이상한거였습니다.

1 Like