코딩테스트 연습 - 문자열 내 마음대로 정렬하기
문자열로 구성된 리스트 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
'코딩 테스트 > Python' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습] 22. 하샤드 수 (0) | 2022.03.22 |
---|---|
[프로그래머스 코딩테스트 연습] 21. 두 개 뽑아서 더하기 (0) | 2022.03.21 |
[프로그래머스 코딩테스트 연습] 17. 자릿수 더하기 (0) | 2022.03.18 |
[프로그래머스 코딩테스트 연습] 16. 2016년 (0) | 2022.03.17 |
[프로그래머스 코딩테스트 연습] 15. 나누어 떨어지는 숫자 배열 (0) | 2022.03.16 |