본문 바로가기
[업무 지식]/Algorithm

[key 인자] 문자역 내림차순으로 배치하기

by 에디터 윤슬 2024. 12. 26.

링크

https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제

정답 1

def solution(s):
	return ''.join(sorted(s, reverse = True))

정답 2

def solution(s):
	s_list = list(s)
    s_list.sort(reverse = True)
    return ''.join(s_list)

정답 3

def solution(s):
	return ''.join(sorted(s, key = lambda x: -ord(x)))
    
    
첫 번째 방법은 가장 간단하고 Pythonic하며 문제를 쉽게 해결할 수 있습니다.
두 번째 방법은 과정을 명확히 보여주고, 초보자에게 적합합니다.
세 번째 방법은 정렬 기준을 커스터마이징해야 하는 경우 유용합니다.

 

key 인자의 다양한 활용법

  • 기본적인 숫자/문자 정렬
# 숫자 리스트 오름차순 정렬
numbers = [3, 1, 4, 1, 5]
sorted_numbers = sorted(numbers)  # [1, 1, 3, 4, 5]

# 문자열 리스트 알파벳 순서 정렬
words = ["banana", "apple", "cherry"]
sorted_words = sorted(words)  # ['apple', 'banana', 'cherry']

 

  • 길이에 따른 문자열 정렬
words = ["banana", "apple", "cherry", "fig"]
sorted_by_length = sorted(words, key=len)
# ['fig', 'apple', 'banana', 'cherry'] (길이가 짧은 순)

 

  • 특정 문자 기준으로 정렬
words = ["banana", "apple", "cherry", "fig"]
sorted_by_last_char = sorted(words, key=lambda x: x[-1])
# ['banana', 'apple', 'cherry', 'fig'] (마지막 글자 기준)

 

  • 대소문자 구분 없이 정렬
words = ["Banana", "apple", "Cherry"]
sorted_case_insensitive = sorted(words, key=lambda x: x.lower())
# ['apple', 'Banana', 'Cherry']

 

  • 복잡한 객체의 특정 속성 기준으로 정렬
students = [
    {"name": "John", "score": 90},
    {"name": "Jane", "score": 85},
    {"name": "Dave", "score": 95},
]

# 점수(score) 기준으로 오름차순 정렬
sorted_by_score = sorted(students, key=lambda x: x['score'])
# [{'name': 'Jane', 'score': 85}, {'name': 'John', 'score': 90}, {'name': 'Dave', 'score': 95}]

 

  • 여러 기준으로 정렬
students = [
    {"name": "John", "score": 90},
    {"name": "Jane", "score": 90},
    {"name": "Dave", "score": 95},
]

# 점수(score) 내림차순 -> 이름(name) 오름차순
sorted_by_multiple_criteria = sorted(students, key=lambda x: (-x['score'], x['name']))
# [{'name': 'Dave', 'score': 95}, {'name': 'Jane', 'score': 90}, {'name': 'John', 'score': 90}]

 

  • 사용자 정의 함수 활용
def custom_key(word):
    return len(word), word[0]  # 길이 우선 -> 첫 글자

words = ["banana", "apple", "cherry", "fig"]
sorted_custom = sorted(words, key=custom_key)
# ['fig', 'apple', 'banana', 'cherry']

'[업무 지식] > Algorithm' 카테고리의 다른 글

[isdigit()] 문자열 다루기 기본  (0) 2024.12.27
[등차수열] 부족한 금액 계산하기  (0) 2024.12.27
[zip] 내적  (0) 2024.12.26
[문자 패턴] 수박수박수박수?  (1) 2024.12.24
[//] 가운데 글자 가져오기  (0) 2024.12.24