10814: 나이순 정렬 - Python

beaver.zip·2024년 12월 10일
0

[알고리즘] 백준

목록 보기
26/45

문제

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

풀이 1 (내 풀이)

import sys
input = sys.stdin.readline

arr = [input().split() for _ in range(int(input()))]
arr.sort(key=lambda i: int(i[0]))
print("\n".join(f"{x} {y}" for x, y in arr))
  • 입력에 대해 나이를 기준으로 정렬을 수행한다.
    예시) i == ['21', 'Junkyu']에서 나이 int(i[0]) == 21를 기준으로 sort
  • 백준 '단계별로 풀어보기'에 나와있는 설명에서 힌트를 얻었다.

풀이 2 (참고)

import sys
input = sys.stdin.readline

arr = [input().split() for _ in range(int(input()))]
arr = sorted([(int(age), i, name) for i, (age, name) in enumerate(arr)])

for age, i, name in arr:
    print(age, name)
  • key=lambda 대신 enumeratelist comporehension을 사용한 풀이다.
  • 내림차순으로 바꿀 때는 -만 붙여주면 되고, 정렬 기준을 바꿀 땐 tuple 안의 변수 순서만 바꾸면 돼서 유연한 사용이 가능할 것 같다.
# 코드 이해
for i, (age, name) in enumerate(arr)])
# 0, (21, Junkyu)
# 1, (21, Dohyun)
# 2, (20, Sungyoung)

이때 '나이 -> 입력 순서' 순으로 정렬하기 위해
(int(age), i, name)으로 저장한다.

교훈

참고 자료

profile
NLP 일짱이 되겠다.

0개의 댓글