유형 : 정렬
[예제]
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
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
반응형
'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 |
댓글