문자열 내 마음대로 정렬하기
문제: https://programmers.co.kr/learn/courses/30/lessons/12915
1. 문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.
제한 조건
strings는 길이 1 이상, 50이하인 배열입니다.
strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
모든 strings의 원소의 길이는 n보다 큽니다.
인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
2. 나의 코드
- n번째 수를 글자의 앞에다 붙인다음, 바로 정렬하면 끝나는 문제.
def solution(strings, n):
answer = []
for i in range(len(strings)):
strings[i] = strings[i][n]+strings[i]
strings.sort()
print(strings)
for j in range(len(strings)):
answer.append(strings[j][1:])
return answer
3. 다른 사람 코드
- lambda를 사용하여 한줄로도 끝낼 수 있다.
def strange_sort(strings, n):
'''strings의 문자열들을 n번째 글자를 기준으로 정렬해서 return하세요'''
return sorted(sorted(strings), key=lambda x: x[n])
strings = ["sun", "bed", "car"]
print(strange_sort(strings, 1))
- 이렇게 n번째 문자를 추출한다음 일일히 비교하는 방법도 있다.
for i in strings:
min.append(i[n])
sorted_min = sorted(min)
while len(result) != len(strings):
for j in range(0, len(strings)):
for k in range(0, len(strings)):
if sorted_min[j] in strings[k][n]:
index = k
result.append(strings[index])
continue
4. 보완
python lambda 복습하기.

