📒 코딩 테스트/Python

Sorting - ①

Lento_ 2025. 4. 25. 11:49

NeetCode

Challenge

Implement the following functions:

  1. 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.
  2. 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