jyamethyst21 님의 블로그

백준 10814번- '나이순 정렬' (PYTHON 풀이) 본문

CODING 💻

백준 10814번- '나이순 정렬' (PYTHON 풀이)

jyamethyst21 2025. 10. 7. 14:17

문제:

사용자로부터 입력값을 받고 해당 수만큼 나이와 이름을 입력받는다.

그리고 이를 나이순으로 정렬하고, 나이가 같으면 먼저 입력한 순으로 그냥 출력하면 된다.

 

풀이:

N = int(input())
k = []

for i in range(N):
    a,b = input().split()
    k.append([int(a),b])

for j in sorted(k, key=lambda x: x[0]):
    print(j[0], j[1])

코드는 다음과 같다. 이 문제를 풀기 위해 기억하면 좋을 게 있는데 append를 쓸 때 리스트 형태로 묶어서 저장한다는 점과 sorted 함수 사용법이다. 지난번 정렬 문제를 풀 때 sorted 함수 내 key를 이용해서 len이라는 길이순으로 정렬해서 문제를 풀었던 적이 있다.

이번에도 key를 이용할건데 함수형태의 lambda를 활용해서 x[0] (나이순)로 정렬하라고 지정해준 뒤 반복문을 돌면 원하는 대로 출력이 가능하다.

 

예를 들어 입력값으로 [30, kim], [29, park] 이렇게 두번 입력받았다고 쳐보자.

그럼 sorted for문을 돌 때 각 x는 리스트 원소를 의미한다. 첫번째 x는 [30, kim], 두번째 x는 [29, park]가 될 것이고 여기서 x[0]는 30, 29인 나이가 된다. 그래서 이를 기준으로 정렬하라는 뜻이 된다.

그 후 print를 통해 나이인 j[0], 이름인 j[1]을 그대로 출력한다.