유형 : 정렬
[예제]
3
21 Junkyu
21 Dohyun
20 Sunyoung
[출력]
20 Sunyoung
21 Junkyu
21 Dohyun
1. 내 풀이
N = int(input())
age_list = []
name_list = []
for _ in range(N):
age, name = input().split(' ')
age = int(age)
age_list.append(age)
name_list.append(name)
age_list2 = list(enumerate(age_list))
age_list3 = sorted(age_list2, key=lambda x:(x[1],x[0]))
for index, value in age_list3:
print(value, name_list[index])
▷ 여기서 핵심은 enumerate와 sorted에서 key이다.
▷ enumerate()로 인덱스와 값을 같이 묶어 age_list에 넣을 수 있었다.
▶ 일차적으로 나이순으로 정렬해야 하니 나이 리스트를 이용해야겠다고 생각했다.
▶ 그리고 나이순 → 입력순이기 때문에 이 경우는 인덱스로 정렬해야겠거니 싶었다.
▷ enumerate()까지는 수월하게 생각했는데, 정렬하는 데에서 조금 시간을 잡았다.
▶ 아직 key 기준으로 정렬하는게 익숙지 않아서 검색을 하고 해결할 수 있었다.
▶ 참고한 블로그 : [Python] 정렬 문법 sort() sorted() reverse
2. 다른 풀이
출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지
** 핵심 아이디어
1. (나이, 이름)의 정보를 입력 받은 뒤에 나이를 기준으로 정렬
2. 파이썬의 기본 정렬 라이브러리를 이용
3. 나이가 동일한 경우 먼저 입력된 이름 순서를 따르도록 key 속성 설정
n = int(intput())
array = []
for _ in range(n):
input_data = input().split(' ')
array.append((int(intput_data[0]), input_data[1]))
array = sorted(array, key=lambda x:x[0])
for i in array:
print(i[0], i[1])
문제 출처 : https://www.acmicpc.net/problem/10814
반응형
'Python' 카테고리의 다른 글
[백준] 10989번 : 수 정렬하기 3 (0) | 2022.01.01 |
---|---|
[백준] 11650번 : 좌표 정렬하기 (0) | 2021.12.31 |
[백준] 1427번 : 소트인사이드 (0) | 2021.12.27 |
[백준] 2750번 : 수 정렬하기 (0) | 2021.12.27 |
[백준] 4195번 : 친구 네트워크 (0) | 2021.12.19 |
댓글