코테18) 문자열 내 마음대로 정렬하기

gyu·2024년 4월 14일

Algorithm

목록 보기
19/45

📝 문제설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

제한 조건
strings는 길이 1 이상, 50이하인 배열입니다.
strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
모든 strings의 원소의 길이는 n보다 큽니다.
인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
입출력 예
strings n return
["sun", "bed", "car"] 1 ["car", "bed", "sun"]["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]

나의 풀이:

def solution(strings, n):
#sorted(key=lambda strings: strings[n])

    strings.sort()
    strings.sort(key=lambda strings: strings[n]) 
    return strings

문제를 읽고 가장 먼저 든 생각은 인덱스 n을 기준으로 sort를 해야 한다는 것이었다. 문제는 특정 인덱스로 sort를 어떻게 하냐였다. 서치해서 특정인덱스로 정렬을 해서 리턴했더니 테스트 케이스가 통과못했다. 왜그런가 했더니 인덱스n이 같은 알파벳일때 사전순으로 정렬하는 케이스를 고려를 못했던 것이다. 그래서 아예 사전순으로 정렬한번 하고 그다음에 인덱스n으로 정렬했더니 답이 됐다.

✔ Tips to improve

def solution(strings, n):
    strings.sort()  
    return sorted(strings, key=lambda strings: strings[n])

sorted를 사용해서 푼 답안

🔗 관련개념

lambda : def keyword 없이 쓸 수 있는 function(anonymous function)

  • A lambda function can take many arguments, but it can only have one expression.
#basic syntax of a lambda
lambda arguments: expression

ex)
x = lambda a : a + 10
print(x(5)) #15

To sort by specific index with lambda:

sorted(strings, key=lambda strings: strings[n])
OR
strings.sort(key=lambda strings: strings[n]) 

strings - the list that you want to sort.
key - is argument that specify a function to be called on each list element prior to making comparisons

profile
#TechExplorer 🚀 Curious coder exploring the tech world, documenting my programming journey in a learning journal

0개의 댓글