-
백준 10814 - 나이순 정렬카테고리 없음 2022. 1. 9. 13:47
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
n = int(input()) arr = [] for i in range(n): age, name = input().split() age = int(age) index = i arr.append([age, name, index]) arr.sort(key=lambda x:(x[0], x[2])) for array in arr: print(array[0], array[1])
정렬 조건이 1순위가 나이고, 2순위가 가입 순서다. 가입 순서는 arr에 들어오는 순서로 따로 입력받지 않으므로, 해당 값을 index라는 변수에 추가하여 배열에 삽입한다.
이후 배열을 정렬할 때, 나이와 index를 기준으로 sort한다. sort한 배열의 0번째 값(나이)와 1번째 값(이름)을 출력한다. 이렇게 하면 굉장히 오래 걸리긴 하지만 풀 수 있다.
from sys import stdin, stdout arr = [[] for _ in range(201)] for i in stdin.read().splitlines(True)[1:]: arr[int(i.split()[0])].append(i) stdout.write(''.join( ''.join(u) for u in arr ))
다른 사람의 코드인데, 나이가 1<= age <= 200이므로 이에 해당하는 배열을 미리 만들어 두고, 입력값이 입력될 때마다 해당 나이인 사람들을 arr[age[]] 배열에 순차적으로 append 하는 형태로 코드를 짠 듯 하다.
이 분들 생각 많이 했네...