문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
Python에는 sorted 내장함수가 있다. 이 내장함수를 이용하면 간단하게 풀 수 있다.
해당 함수는 iterable로 부터 정렬된 리스트를 생성해준다.
또한 key를 이용해 원하는 기준을 통해서 정렬을 할 수 있게 해준다.
문제에 설명된 대로 n번째 문자를 기준으로 정렬하되, 마지막 제한 조건에 설명된 대로 같은 문자열일 경우 사전순으로 앞선 문자열이 앞쪽에 위치해야 한다.
def solution(strings, n):
answer = sorted(sorted(strings), key=lambda l:l[n])
return answer
정렬하기 전에 기본적으로 사전순으로 정렬하고, 사전순으로 정렬된 문자를 lambda를 이용해 n번째 문자열을 key로 지정해 그 key로 정렬되도록 하여 다시 정렬한다.
글을 적은 이유는 프로그래머스는 문제를 풀고나면 다른 사람의 풀이를 볼 수 있게 되어있는데 맨 위에 올라온 풀이가 맨 마지막 조건에 위배되어 오답처리가 되는데 올라와 있어서 간단한 문제지만 풀이를 올리고 싶어서 올렸습니다. 아마 테스트 케이스가 추가되기 이전에 풀어진 문제 같아요