sorted는 새 리스트를 만들어요
리스트의 순서와 함수 반환을 배웠어요. sorted(values)는 작은 값부터 정렬한 새 리스트를 반환해요. 원본 values는 그대로예요.
values = [8, 3, 6]
ordered = sorted(values)
print(values[0])
print(ordered[0])
첫 출력은 8, 둘째는 3이에요. 반면 values.sort()는 values 자체를 정렬해요. sort의 반환값은 값 목록이 아닌 None이므로 ordered = values.sort()처럼 새 목록을 받으려 하면 안 돼요. 다음 페이지의 그림에서 원본과 정렬한 결과를 구분해요.
순번을 인덱스로 바꿔요
같은 ordered는 [3, 6, 8]이에요. 두 번째로 작은 값은 ordered[1]인 6이에요. 사람이 읽는 첫 번째와 인덱스 0의 차이를 생각해요.
rank = 2
chosen = ordered[rank - 1]
같은 값이 여러 개 있어도 각 자리를 차지해요. [2, 2, 5]의 두 번째 값은 2예요. 아래 과제는 고른 값만이 아니라 처음 입력한 첫 값도 출력하므로 원본을 유지해야 해요. 출력 두 값은 print를 두 번 써서 각각 한 줄에 표시해요.
직접 풀어봐요
values를 작은 순서로 정렬했을 때 rank 번째 값을 찾아요. 첫 출력 줄에는 원본 첫 값, 둘째 줄에는 고른 값을 출력해요. 중복 값도 각각 순번을 차지해요.
첫 줄 n(1100), 다음 n 줄에 값(−10001000), 마지막 줄 rank(1~n)이에요.
예시 1: values =[8, 3, 6], rank = 2 → 출력 줄 8, 6이에요.
예시 2: values =[5, 2, 2], rank = 2 → 출력 줄 5, 2예요.
예시 입력
3 8 3 6 2
예상 결과
8 6
예시 입력
3 5 2 2 2
예상 결과
5 2
핵심 개념
basic-sort-search: sorted와 sort의 원본 변경 차이를 구분하고 순번에서 1을 빼 인덱스로 바꿔요.