BAEKJOON /10814:나이순 정렬

[python] stable 정렬

stable 정렬에서는 입력 받은 값들 중에 같은 값이 있는 경우 해당 값의 순서를 그대로 유지한다. 예를 들어, [1, 2, 3(X), 4, 5, 3(Y)] 을 오름차순 정렬한다면, [1, 2, 3(X), 3(Y), 4, 5]순으로 세 번째 위치한 3의 위치와 여섯 번째 위치한 3의 위치가 바뀌지 않는다.

반대인 unstable 정렬에서는 정렬을 장담할 수 없다.

[python]lambda 매개변수 : 표현식

: member_lst.sort(key = lambda x : x[0])

-->매개변수는 x, member_lst를 x[0]을 기준으로 sort( )해라

<문제 설명>

나이 순으로 정렬한 후 나이가 같으면 들어온 순으로 정렬하라고는 되어있지만 사실상 나이 순으로만 정렬하면 되는 문제

<문제 풀이>

n = int(input())
member_lst = []

for i in range(n):
    age, name = map(str, input().split())
    age = int(age)
    member_lst.append((age, name))

member_lst.sort(key = lambda x : x[0])	## (age, name)에서 age만 비교
#member_lst.sort()로 쓰면 22 cba, 22 bca, 22 abc가 들어왔을 때 결과가 나이가 다 똑같으니까 들어온 순서대로 출력돼야 하는데 뒤에 알파벳도 정렬돼서 알파벳 순으로 출력됨
for i in member_lst:
    print(i[0], i[1])

좋은 웹페이지 즐겨찾기