코딩 테스트/Python

[프로그래머스 코딩테스트 연습] 19. 문자열 내 마음대로 정렬하기

알밤바 2022. 3. 20. 09:00
728x90
반응형
 

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

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

programmers.co.kr


1) 문제 설명

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

 

2) 제한 조건

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

 

3) 입출력 예


1. 문제 접근방식

n번째 인덱스를 기준으로 정렬을 해야 한다.

그리고 n번째 인덱스의 값이 아닌 문자열을 출력해야 한다.

 

이 2가지를 모두 만족할 수 있도록 코드를 구현해야 한다. (매우 쉽지 않음...)

 

2. 풀이 코드

def solution(strings, n):
    answer = []
    n_list = []

    for string in strings:
        str = string[n] + string   # 문자열 앞에 n번째 인덱스 값 추가
        n_list.append(str)

    n_list.sort()

    for i in n_list:
        answer.append(i[1:])   # 맨 앞에 추가된 n번째 인덱스 값을 제외하고 answer에 추가

    return answer

n번째 인덱스를 기준으로 정렬을 해야 한다.

→ 문자열에 각 n번째 인덱스의 값을 앞에 추가하여 오름차순으로 정렬한다.

→ answer 리스트에 담을 때는, 문자열 맨 앞에 n번째 인덱스 값이 있기에 슬라이싱으로 첫 번째 문자를 제거한다.

 

사실, 코드를 구현하면서 n번째 인덱스 값의 정렬을 하였는데, 특정 문자가 아닌 전체 문자열로 출력을 해야 하는 것을 할 지 몰라 결국 코드를 찾아보았다.

 

▼참고한 코드의 블로그▼

 

[Python] 코딩테스트 level1 - 문자열 내 마음대로 정렬하기

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

dapsu-startup.tistory.com

 

# sorted()와 lambda 사용

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

sorted 내장함수와 lambda를 활용하여 구현한 코드도 있다.

정말로 매~~우 간단하다...

x[n]을 기준으로 하여 strings를 정렬하는 코드이다.

 

 

3. 배운 점

sorted 함수와 lambda에 대해서 다시 한번 공부할 수 있게 되었다.

분명 파이썬 마스터 풀잎스쿨 시간에 배웠던 것 같은데, 역시나 기억이 잘 나지 않는다...흑흑

그리고 이전까지는 for문, if문을 사용해서 문제를 풀었는데 이제는 그렇게 단순하게 풀리지 않는다는 것이다..!

 

1) sorted 내장함수

  • 객체의 데이터 중에서 특정한 데이터를 기준으로 정렬하기 위해 key 매개변수를 사용한다.
  • 위의 코드에서 정렬의 기준은 x[n]이 된다.
 

[Python] sort()와 sorted()로 정렬하기 – nc2u 블로그

[Python] sort()와 sorted()로 정렬하기 파이썬 리스트는 sort() 라는 메소드를 가지고 이 메소드는 리스트를 정렬된 상태로 변경한다. 또 sorted() 라는 내장 함수는 이터러블 객체로부터 정렬된 리스트

cigiko.cafe24.com

 

 

2) lambda

  • lambda 매개변수(인자) : 표현식
  • (lambda x, y : x + y)(10, 20) → x와 y를 더하여 리턴
 

[파이썬 코딩] 람다 함수(lambda function) 이해하기

이 페이지에는 람다(lambda) 표현식, 람다를 사용하는 이유, 람다를 사용하는 예제로 map() 함수, filter() 함수, sorted() 함수가 설명되어 있습니다. 이번 포스팅에 추가로 도움이 될만한 페이지를 소개

digital-play.tistory.com

 

[+] sorted(), sort(), lambda 함수 정리 글

 

sorted(), .sort()에서 조우한 익명함수 lambda_파이썬 일기토

코딩도장을 진행하다, Unit23의 sorted() 함수로 2차원 리스트 정렬하기에서 람다함수의 활용을 조우하실수 있습니다.sorted(), .sort()에서 람다 공략법입니다. 정리한 내용입니다.

velog.io

 

728x90
반응형