https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
# 10814 - Python 3
2가지 풀이 방법으로 정렬하여 풀어보았습니다.
sol 1)
import sys
input = sys.stdin.readline
n = int(input())
arr = []
for i in range(n):
age, name = map(str, input().split())
arr.append([int(age), i, name]) # 입력 받은 순서대로 뽑기 위해 i도 arr에 붙임
arr.sort()
for i in range(n):
print(arr[i][0], arr[i][2])
<line 11>
- arr[1]에 입력 받은 순서 저장
: 이후 나이가 같은 경우, 입력 받은 순서를 차후 출력 기준으로 삼기 위함.
sol 2)
import sys
input = sys.stdin.readline
n = int(input())
arr= []
for _ in range(n):
age, name = map(str, input().split())
arr.append([int(age), name])
arr.sort(key = lambda arr : arr[0]) # lambda를 이용하여 정렬 기준을 age로 함
for i in arr:
print(*i, end = " ") # *i에서 *s는 출력 시 list의 형식을 없애줌
print()
< line 13 >
- sort() 함수에서 key를 lambda로 설정
: arr[0]을 기준으로 하여 정렬
: arr[0] 대신 -arr[0]으로 설정할 시 오름차순 대신 내림차순으로 변화
ex) arr.sort(key = lambda arr : -arr[0]) : arr[0] 기준 내림차순 정렬
arr.sort(key = lambda arr : arr[0]) : arr[0] 기준 오름차순 정렬
'코딩' 카테고리의 다른 글
| [Python] 백준 #7568. 덩치 (0) | 2023.03.10 |
|---|---|
| [Python] 백준 #11650. 좌표 정렬하기 (0) | 2023.03.10 |
| [Python] 백준 #2751. 수 정렬하기 2 (0) | 2023.03.10 |
| [Python] 백준 #1181. 단어 정렬 (0) | 2023.03.10 |
| [Python] 백준 #2108. 통계학 (0) | 2023.03.05 |