■ 문제 링크
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
■ 문제
본 문제는 solved.ac 실버 5 문제이다.
■ 풀이
이 문제에서 중요한 부분은 바로 "lambda"이다.
코드에 대한 설명을 하자면,
우선 N의 값을 정수로 입력받는다.
그리고 그 수 만큼 반복문을 돌려서 나이, 이름을 입력받는다.
age는 정수형으로 만들어주며,
만들어둔 member_list에 [나이,'이름']을 N번 append 해준다.
이 리스트를 나이 기준으로 정렬을 해 주어야 하는데,
첫번째 인자를 기준으로 정렬하기 위해서는
member_list.sort(key=lambda x:x[0])
이런식으로 sort 해주어야 한다.
"key"는 정렬 기준을 지정하는데 사용한다.
즉, 각 원소를 어떤 값으로 비교해서 정렬할지를 지정하는 역할을 한다.
lambda x:x[0]은, 람다 함수를 사용하여 각 원소 x의 첫 번째 원소를 기준으로 정렬하겠다는 의미이다.
+ 첫 번째 원소가 같을 경우, 두 번째 원소를 기준으로 사전순으로 정렬하려면 어떻게 해야할까?
member_list.sort(key=lambda x: (x[0],x[1]))
로 수정해주면 된다.
N = int(input())
member_list = list()
for num in range(N):
age, name = input().split()
age = int(age)
member_list.append([age,name])
member_list.sort(key=lambda x:x[0])
for member in member_list:
print(member[0],member[1])
'Algorithm > Python' 카테고리의 다른 글
[BOJ] 1259 팰린드롬수 - Python (0) | 2023.08.13 |
---|---|
[BOJ] 2231 분해합 - Python (0) | 2023.08.12 |
[BOJ] 2869 달팽이는 올라가고 싶다 - Python (0) | 2023.08.12 |
[BOJ] 1157 단어공부 - Python (0) | 2023.08.12 |
[BOJ] 1181 단어 정렬 - Python (0) | 2023.08.12 |