인덱스 목록과 0 개 이상의 정수 목록이 제공되면 첫 번째 입력의 키 우선 순위와 함께 오름차순으로 정렬 된 정수 목록을 출력하십시오.
예
키를 입력 [1, 0, 2]
하고 목록을 입력하십시오 [[5, 3, 4], [6, 2, 1], [5, 2, 1]]
. 이 목록은 두 번째 요소, 첫 번째 요소, 세 번째 요소 순으로 오름차순으로 정렬해야합니다.
- 먼저 index의 값을 기준으로 정렬합니다
1
.[[6, 2, 1], [5, 2, 1], [5, 3, 4]]
- 다음으로 index의 값을 사용하여 첫 번째 정렬과의 관계를 끊습니다
0
.[[5, 2, 1], [6, 2, 1], [5, 3, 4]]
- 마지막으로 인덱스에서 vlues와의 남은 연결을 끊습니다. 남은 연결
2
이 없기 때문에 실제로 아무것도 변경되지 않습니다.
세부
- 정렬은 안정적입니다. 두 요소가 주어진 정렬 키와 동일하게 비교되는 경우 출력에서 동일한 상대 순서를 유지해야합니다. 예를 들어,
A
및B
지정된 소트 키 하에서 동일하고, 입력 된[..., A, ..., B, ...]
,A
이전에 위치해야B
출력한다. - 정렬 키는 입력 목록 중 하나에 존재하지 않는 요소를 참조하지 않습니다.
- 정렬 키가 반복되지 않습니다. 따라서
[1, 2, 1]
유효한 정렬 키 목록이 아닙니다. - 정렬 키로 참조되지 않은 요소는 정렬 순서를 고려하지 않습니다. 정렬 키로 참조되는 요소의 값과 초기 상대 순서 만 출력 순서를 결정합니다.
- 정렬 키가 0 색인인지 1 색인인지를 선택할 수 있습니다.
- 정렬 키에는 음수 값이 없습니다. 1 인덱싱을 사용하도록 선택하면 정렬 키에도 0이 없습니다.
- 정수 값은 귀하의 언어가 대표 할 수있는 범위를 초과하지 않습니다. 선택한 언어가 기본적으로 파이썬과 같은 임의의 정밀도 정수를 사용할 수있는 경우 메모리 제약 조건에 따라 모든 정수 값이 입력에 존재할 수 있습니다.
참조 구현 (Python 2)
#!/usr/bin/env python
keys = input()
lists = input()
print sorted(lists, key=lambda l:[l[x] for x in keys])
테스트 사례
형식 : keys lists -> output
. 모든 정렬 키는 인덱스가 0입니다.
[1, 0, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[5, 2, 1], [6, 2, 1], [5, 3, 4]]
[1, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[6, 2, 1], [5, 2, 1], [5, 3, 4]]
[0, 1] [[1, 2], [2, 1]] -> [[1, 2], [2, 1]]
[1, 0] [[1, 2], [2, 1]] -> [[2, 1], [1, 2]]
[0] [[4], [10, 11, -88], [-2, 7]] -> [[-2, 7], [4], [10, 11, -88]]
[2] [[-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6]] -> [[-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2]]
[2, 1] [[9, 2, -2, -10, -6], [3, -4, -2]] -> [[3, -4, -2], [9, 2, -2, -10, -6]]
[2, 4, 8] [[5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5], [-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3]] -> [[-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3], [5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5]]
[1, 2, 3, 4, 5] [[-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [5, 3, -6, -5, -4, -4, -8, 2], [9, -4, 1, -1, -3, -2], [-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [1, -5, -3, -10, -7, 9, -8, -5, -1], [-9, 4, -1, -1, 2, 4]] -> [[-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -5, -3, -10, -7, 9, -8, -5, -1], [9, -4, 1, -1, -3, -2], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [5, 3, -6, -5, -4, -4, -8, 2], [-9, 4, -1, -1, 2, 4]]
[8, 7, 3, 2, 4, 9, 1] [[8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9]] -> [[10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5]]