본문 바로가기

Python

[Python/level 0] 접미사 배열 - 181909, 리스트 컴프리헨션, sort vs. sorted(key 매개변수, lambda, reverse 매개변수, 리스트 일부만 정렬)

문제 설명

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

 

sort와 sorted 비교분석

종류 sort sorted
적용대상 list list뿐만 아니라 튜플, 문자열, 딕셔너리 등 반복 가능한 모든 객체
반환값 None
(정렬된 값을 반환하지 않고, 원본 리스트를 직접 정렬하여 변경함)
정렬된 새로운 리스트를 반환
(원본 데이터는 변경되지 않음)
사용 방법 list.sort() sorted(iterable)
  • key 매개변수
    • key를 매개변수로 받아서 정렬 기준을 사용자가 정의할 수 있습니다.
    • 이 매개변수에는 각 항목에 적용할 함수를 받으며, 이 함수의 반환값을 기준으로 정렬이 이루어집니다.
# 예시: 문자열을 길이에 따라 정렬
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # ['date', 'apple', 'cherry', 'banana']

 

  • lambda와 함께 사용
    • key 매개변수와 함께 lambda 함수를 사용하면, 더욱 복잡한 정렬기준을 정의할 수 있습니다.
# 예시: 튜플의 두 번째 항목을 기준으로 정렬
pairs = [(1, 2), (3, 1), (5, 3), (4, 2)]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(sorted_pairs)  # [(3, 1), (1, 2), (4, 2), (5, 3)]

 

  • reverse 매개변수
    • reverse=True를 인자로 전달하면 내림차순으로 정렬할 수 있습니다.
numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # [9, 5, 4, 3, 1, 1]

 

  • 리스트 일부만 정렬
    • 슬라이싱과 함께 sort()를 사용할 수 있습니다.
numbers = [5, 3, 8, 6, 7, 2]
numbers[1:5] = sorted(numbers[1:5])
print(numbers)  # [5, 3, 6, 7, 8, 2]

 

 

code - 1차

def solution(my_string):
    answer = []
    for i in range(len(my_string)):
        answer.append((my_string[i::]))
        answer.sort()
    return answer

 

code - 2차

def solution(my_string):
    return sorted([my_string[i::] for i in range(len(my_string))])

 

 

반응형