문자열 내 마음대로 정렬하기
문제: 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 복습하기.
'Computer Science > 알고리즘 문제풀이' 카테고리의 다른 글
Programmers > #25 winter recruit > #1 [JAVA] (0) | 2018.10.29 |
---|---|
Programmers > Level 1 > #24 소수찾기 [Python] (0) | 2018.10.20 |
Programmers > Hash > #22 위장 [JAVA] (0) | 2018.10.18 |
Programmers > Sort > #21 H-Index [JAVA] (0) | 2018.10.18 |
[Programmers] #20 라면공장 [JAVA] (0) | 2018.10.16 |