국문과 유목민

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

알고리즘_코딩테스트/프로그래머스_Level1

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

논곰 2020. 9. 10. 19:07

0. 문제

링크) https://programmers.co.kr/learn/courses/30/lessons/12915

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기

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

programmers.co.kr


1. 알고리즘 계획

  1. 처음 들어오는 값을 정렬해준다.
  2. '삽입정렬'을 이용해서 배열을 한다.


2. 나의 코드

def solution2(strs, n):
    strs.sort()
    for i in range(1, len(strs)):
        j = i-1
        while (j >= 0 and strs[j][n] > strs[i][n]): # strs[j]가 더 낮으면 while문 아웃
            j -= 1
        strs.insert(j+1, strs[i])
        del strs[i+1]
    return strs


3. 다른 사람의 코드

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

- sorted함수를 사용한 풀이

- sorted함수는 뒤에 key = lambda를 이용해서 정렬할 수 있다.

from operator import itemgetter

def solution2(strings, n):
    return sorted(sorted(strings), key=itemgetter(n))

- Itemgetter: Item의 배열 n번째를 기준으로 정렬함을 의미한다. 

- 위의 코드와 유사하다. 함수를 lambda로 주느냐, itemgetter함수를 이용하느냐에 차이


4. 정리 및 리뷰

- 알고리즘에서 배웠던 정렬방법을 사용해서 풀어보고자 해서, '삽입정렬'을 이용해 풀었다.

- 하지만 파이썬의 경우 간결함이 가장 큰 장점이라고 생각한다. 그런 의미에서 위의 sorted함수의 사용 방법을 알았다면 어렵지 않게 풀 수 있었을 것 같다.


코드 만족도: ★★★☆☆


Comments