n = int(input())
ls = []
for _ in range(n):
age, name = map(str, input().split())
age = int(age)
ls.append((age, name))
# sort_ls = sorted(ls) -> A-Z 순으로 정렬되서 오답
ls.sort(key = lambda parameter_list: parameter_list[0])
"""
위 lambda식과 동일
ls안에 있는 것들이 parameter_list의 인수(argument)가 되어
인덱스 [0]에 해당하는 age로만 정렬됨
인덱스 [1]로 하면 name으로 정렬할 것임
def ladmbda(parameter_list):
return parameter_list[0]
"""
for i in ls:
print(i[0], i[1])
풀이
이 문제의 포인트는 lambda의 활용인 것 같네요!
n 변수로 온라인 저지 회원의 수를 입력받고
ls 변수를 리스트로 초기화 한 뒤 for 반복문으로
age, name 변수로 각각 str 타입으로 값을 입력받은 뒤 (이때 숫자도 '21'로 저장됨)
age는 다시 int 타입, 정수로 초기화하고 ls에 추가했습니다👍🏻
다음으로 첨부한 사진에 나오는 것처럼 lambda에 대해 먼저 공부해보자면
key point
parameter(매개변수, 인자): return할 함수(argument(인수))
위와 같이 이름없는 함수(lambda)라는 것에 걸맞게 이름없이 순식간에 함수식을 만드는데 쓰는데요.
def blahblah(parameter):
return(parameter[0])
= lambda parameter: parameter[0]
두 개의 코드가 동일한 코드라고 생각하면 됩니다🙌🏻
이제 ls에 있는 리스트 중 parameter_list[0]에 해당하는 첫 번째 인덱스로만 sort() 정렬을 하면
name은 건드리지 않고 age순으로만 정리되어 예제 출력값을 뽑을 수 있게됩니다.
(바로 sorted를 통해서 정렬하게 되면 A-Z순으로도 정렬되어 예제 출력과 다르게 나옵니다.)
마지막으로 for 반복문으로 ls 리스트에 [0] [1] 인덱싱으로 출력해주면 문제풀이 끄---읏!👏🏻