문제 : https://programmers.co.kr/learn/courses/30/lessons/12915
코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인
programmers.co.kr
이 문제는 파이썬에서 간단하게 풀 수 있다.
sorted(strings, key=lambda a:(a[n],a) ) 로 한줄로 정렬해서 뭔말인지 모를 수 있는데 그냥 분해해서 보면 간단하다.
- sorted(iterable) -> iterable Iterable한, list 같은 데이터를 정렬해서 반환한다.
- (obj.sort()는 반환 없이 obj 정렬, 조심하자. )
- key= 이 인자는 "어떤 조건으로 정렬할건지" 라는것을 받는다.
- lambda a: 람다, 익명함수 뭐 이런 함수형 언어 개념 조금인데, 함수 이름은 필요없고, iterable 에서 인자 하나를 a 라는 이름으로 받는다는 뜻이다.
- 더 궁금하면 찾아보자. 함수형 언어, 함수형 프로그래밍같은걸로 찾으면 나온다.
- (a[n],a) 첫번째는 a[n]을 오름차순으로, 첫번째 조건이 같으면 a를 오름차 순으로 정렬하라는 뜻이다.
- 변환할 인자가 하나면 괄호는 생략할 수 있다. lambda a : (a[n]) -> lambda a: a[n]
def solution(strings, n):
return sorted(strings, key=lambda a: (a[n],a) )
'취준 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Programmers][Python] 타겟 넘버 (0) | 2020.02.02 |
---|---|
[프로그래머스 Programmers][Python] 카펫 (0) | 2020.01.31 |
[프로그래머스 Programmers][Python] 땅따먹기 (0) | 2020.01.29 |
[프로그래머스 Programmers][Python] 기능개발 (0) | 2020.01.28 |
[프로그래머스 Programmers][Python] 도둑질 (0) | 2020.01.27 |