[Algorithm] 문자열 내 마음대로 정렬하기

이호영·2020년 5월 1일
0

algorithm

목록 보기
2/9
post-custom-banner

문제

문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 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로 정렬되도록 하여 다시 정렬한다.

후기

글을 적은 이유는 프로그래머스는 문제를 풀고나면 다른 사람의 풀이를 볼 수 있게 되어있는데 맨 위에 올라온 풀이가 맨 마지막 조건에 위배되어 오답처리가 되는데 올라와 있어서 간단한 문제지만 풀이를 올리고 싶어서 올렸습니다. 아마 테스트 케이스가 추가되기 이전에 풀어진 문제 같아요

profile
안녕하세요!
post-custom-banner

0개의 댓글