← 학습 코스

정렬한 값과 원본을 구분하기

Python전체 작성형

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 =[8,3,6]의 첫 값 8은 유지되고 정렬 결과 ordered =[3,6,8]의 두 번째 값이 6인 관계

직접 풀어봐요

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을 빼 인덱스로 바꿔요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기