
Challenge
Implement the following functions:
- sort_words(words: List[str]) -> List[str] - This function accepts a list of words and returns a new list of words sorted based on their length, in descending order.
- sort_numbers(numbers: List[int]) -> List[int] - This function accepts a list of numbers and returns a new list of numbers sorted based on their absolute value, in ascending order. Hint: You may use the abs() function to get the absolute value of a number.
Hint: You may define additional functions. Functions defined in the global scope are accessible within other functions.
Expected output:
['watermelon', 'blueberry', 'zucchini', 'cherry', 'banana', 'apple', 'kiwi', 'pear']
[1, 2, -2, 2, -3, 4, -4, -5, 5, -6, 6, 7, 9, 11, -19]
(첫 번째 작성한 코드)
from typing import List
def sort_words(words: List[str]) -> List[str]:
return sorted(words, key=lambda word: len(word), reverse=True)
def sort_numbers(numbers: List[int]) -> List[int]:
return sorted(numbers, key=lambda numbers: abs(numbers))
# do not modify below this line
print(sort_words(["cherry", "apple", "blueberry", "banana", "watermelon", "zucchini", "kiwi", "pear"]))
print(sort_numbers([1, -5, -3, 2, 4, 11, -19, 9, -2, 5, -6, 7, -4, 2, 6]))
(두 번째 작성한 코드)
from typing import List
def word_length(word: str) -> int:
return len(word)
def number_abs(number: int) -> int:
return abs(number)
def sort_words(words: List[str]) -> List[str]:
words.sort(key=word_length, reverse=True)
return words
def sort_numbers(numbers: List[int]) -> List[int]:
numbers.sort(key=number_abs)
return numbers
# do not modify below this line
print(sort_words(["cherry", "apple", "blueberry", "banana", "watermelon", "zucchini", "kiwi", "pear"]))
print(sort_numbers([1, -5, -3, 2, 4, 11, -19, 9, -2, 5, -6, 7, -4, 2, 6]))
(출력 결과)
Output:
['watermelon', 'blueberry', 'zucchini', 'cherry', 'banana', 'apple', 'kiwi', 'pear']
[1, 2, -2, 2, -3, 4, -4, -5, 5, -6, 6, 7, 9, 11, -19]
.sort() VS sorted()
| .sort() | sorted() | |
| 적용 대상 | 리스트 객체 전용 | 반복 가능한 모든 객체(리스트, 튜플, 문자열 등) |
| 반환값 | None(원본 리스트가 직접 정렬됨) | 정렬된 새로운 리스트 반환 |
| 사용 목적 | 원본을 정렬해야 할 때 | 원본을 유지하고 정렬 결과만 필요할 때 |
key 매개변수로 가능한 함수들
1. 내장함수
ex. abs, str.lower, len 등
# 절댓값 기준 정렬
sorted([-3,2,-1], key=abs)
2. 사용자 정의 함수
def get_last_char(s):
return s[-1]
sorted(["apple", "banana", "cherry"], key=get_last_char)
3. lambda
sorted(["apple", "banana", "cherry"], key=lambda x:x[-1])
4. 복합 기준 반환 (튜플 형태)
# 길이 기준 정렬 후, 길이가 같을 경우 알파벳 순으로 반환
sorted(words, key=lambda x:(len(x),x))'📒 코딩 테스트 > Python' 카테고리의 다른 글
| 백준 3003 | list(map(int, input().split())) (0) | 2025.06.04 |
|---|