본문 바로가기
Computer Science/Algorithm

[백준] 나이순 정렬 10814, python

by 9루트 2023. 1. 6.

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

포인트

sorted에서 lambda 사용법 (특정 인덱스 기준으로 정렬하기)

sort_list = sorted(list, key=lambda a: a[0])

https://gorokke.tistory.com/38

 

람다(lambda) 총 정리, key sort, key 정렬

1. 람다(lambda) 1 ) 의미 익명함수를 지칭하는 용어 즉, 기존의 함수(명 등)을 선언하고 사용하던 방식과는 달리 바로 정의하여 사용할 수 있는 함수. 2 ) 형식 : lambda 인자 : 표현식 예시) sum = lambda x:

gorokke.tistory.com

 

딕셔너리는 key 값이 중복되면 저장되지 않는다.

 

 

 

처음엔 딕셔너리로 풀어서 

{이름: 나이, ...} 이렇게 정렬 했다.

# 입력
n = int(input())
old_dic = {}
for i in range(n):
    old, name = map(str, input().split())
    old = int(old)
    old_dic.setdefault(name, old)

# 나이적은 순부터 앞으로 오름차순 정렬하기
# value값 기준으로 오름차순 정렬을 한다.
sorted_dic = sorted(old_dic.items(), key=lambda x:x[1])
sorted_dic = dict(sorted_dic)
# print(sorted_dic)
for key, value in sorted_dic.items():
    print(value, key)

 

그런데 계속 틀렸습니다. 가 나와서

서핑을 해보니

이름이 같을 때는 뒤에 오는 동명이인이 아예 딕셔너리에 저장되지 않는다는 점이었다.

 

따라서 결국엔 value나 key값이 중복되도 사라지지 않으려면

list를 써야 했다.

# 입력
n = int(input())
list = []
for i in range(n):
    old, name = map(str, input().split())
    old = int(old)
    list.append([old, name])

# 나이적은 순부터 앞으로 오름차순 정렬하기
sort_list = sorted(list, key=lambda a: a[0])
for person in sort_list:
    print(person[0], person[1])