상세 컨텐츠

본문 제목

[백준] 10814번 - 나이순 정렬 (정렬) - 결과 포함

개발 공부 (알고리즘)

by letprogramming 2021. 2. 2. 02:16

본문

반응형

www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

두 가지 조건을 이용해 정렬하는 문제이다.

이전 문제들과 다른 점은 두 조건의 자료형이 다르다는 점이었다.

좌표 정렬 문제에서는 x와 y모두 정수로 주어졌고,

단어 정렬 문제에서는 문자열만 주어졌다.

 

이번 문제에서는 입력 받는 한 쌍이 (숫자, 문자열)로 이루어져 있다.

먼저 나이 순으로 정렬하는 조건을 위해서

sort()함수의 key 파라미터에 현재 리스트의 첫 번째 원소, 나이(숫자)를 전달한다.

 

만약에 나이가 같은 원소가 존재할 경우 두 번째 조건인 가입한 순으로 정렬하게 해야한다.

이전의 문제와 다르게 두 번째 원소를 이용한 조건이 아닌 다른 조건이 나왔다.

 

가입한 순서는 단순하게 리스트에 들어가 있는 순서이다. 그러므로 가입한 순서는 인덱스의 크기에 비례한다.

입력을 받을 때마다 현재 입력 반복 횟수를 나이, 이름과 함께 저장했다.

이 반복 횟수를 이용해서 두 번째 조건으로 정렬하면 가입한 순서대로 정렬할 수 있다.

 

[소스 코드]

import sys

n = int(sys.stdin.readline().rstrip())

data = []
for i in range(n):
    age, name = sys.stdin.readline().rstrip().split()
    data.append((int(age), name, i))

data.sort(key=lambda person: (person[0], person[2]))

for person in data:
    print(person[0], person[1])
반응형

관련글 더보기