https://school.programmers.co.kr/learn/courses/30/lessons/250121
1. 문제 설명
data = [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
이런 식으로 구성된 데이터에서 원하는 정보를 뽑아 정렬해 출력하는 문제다.
2. 문제 풀이
def solution(data, ext, val_ext, sort_by):
answer = []
data_type = {
"code" : 0,
"date" : 1,
"maximum" : 2,
"remain" : 3
}
for i in data:
if i[data_type[ext]] < val_ext:
answer.append(i)
answer.sort(key=lambda x: x[data_type[sort_by]])
return answer
처음에는 조건문을 쓰는 방법을 떠올렸지만, 정렬할 때 또 조건문을 쓰는 건 너무 길어질 것 같아 data_type 딕셔너리를 만들어두었다.
val_ext보다 작은 리스트들을 넣어놓고, 마지막에 sort_by에 맞는 리스트의 인덱스 값들을 비교해 정렬해주었다.
728x90
'study > 알고리즘' 카테고리의 다른 글
[이것이 코딩테스트다] 7장 이진 탐색(Binary Search) (1) | 2024.06.03 |
---|---|
[알고리즘] 정렬 알고리즘(이것이 코딩테스트다) (0) | 2024.05.20 |
[알고리즘] '이것이 코딩테스트다' Chapter 4 구현 (1) | 2024.05.06 |
[백준] 13305번 주유소 파이썬(그리디 알고리즘) (1) | 2024.04.13 |
[백준] 백준 11047 <동전 0> 파이썬 (그리디 알고리즘) (0) | 2024.04.09 |