-
[프로그래머스 1단계] 알고리즘 7. 문자열 내 마음대로 정렬하기24년 11월 이전/레거시-알고리즘(3) 2018. 3. 5. 11:54반응형
문제 출처는 프로그래머스 알고리즘 연습 에서 볼 수 있습니다!(https://programmers.co.kr/learn/challenges)
알고리즘 7. 문자열 내 마음대로 정렬하기
strange_sort함수는 strings와 n이라는 매개변수를 받아들입니다.
strings는 문자열로 구성된 리스트인데, 각 문자열을 인덱스 n인 글자를 기준으로 정렬하면 됩니다.예를들어 strings가 [
sun
,bed
,car
]이고 n이 1이면 각 단어의 인덱스 1인 문자 u, e ,a를 기준으로 정렬해야 하므로 결과는[car
,bed
,sun
]이 됩니다. strange_sort함수를 완성해 보세요.def strange_sort(strings, n):'''strings의 문자열들을 n번째 글자를 기준으로 정렬해서 return하세요'''return []# 아래는 테스트로 출력해 보기 위한 코드입니다.print( strange_sort(["sun", "bed", "car"], 1) )풀이:
나의 풀이는 간단했다. 파이썬 내장 함수인 sorted 함수를 이용하는 것이다. 내장 함수 sorted 함수는 key 라는 파라미터 인자에다 람다를 활용하여 컬렉션 내 정렬 기준을 잡아줄 수 있다. 코드를 보면 무슨 말인지 대략적으로 알 수 있을 것이다.
def strange_sort(strings, n):return sorted(strings, key=lambda string: string[n])먼저 처음 인자로 컬렉션을 넣어주고 key에다 정렬 기준을 잡아준다. 정렬 기준은 다음 람다식이다.
lambda string: string[n]
해석하자면 문자열 string 안에서 n번째 요소를 반환하는 식이다. 이것을 sorted 함수의 key로 잡아주면 알아서 컬렉션을 순회하면서 string에 "sun", "bed", "car" 같은 요소들이 대입된다. 그 후 n번째 요소 기준으로 정렬하게 된다. 프로그래머스 알고리즘을 풀면서 느낀건데 기본 알고리즘을 직접 짜는 능력도 중요하지만 언어가 제공하는 기능들을 잘 아는 것도 중요한 것 같다.
728x90'레거시 > 레거시-알고리즘(3)' 카테고리의 다른 글
[프로그래머스 1단계] 알고리즘 9. 자릿수 더하기 (0) 2018.03.15 [프로그래머스 1단계] 알고리즘 8. 문자열 다루기 기본 (0) 2018.03.12 [프로그래머스 1단계] 알고리즘 6. 같은 숫자는 싫어! (0) 2018.02.21 [프로그래머스 1단계] 알고리즘 5. 행렬 합 (0) 2018.02.20 [프로그래머스 1단계] 알고리즘 4. 가장 작은 수 제거하기 (0) 2018.02.13