링크
https://school.programmers.co.kr/learn/courses/30/lessons/12917
문제
정답 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 |