sorted()와 sort() 차이 한눈에 보기
- sorted() : 반환 값으로 정렬된 리스트를 뱉어낸다.
- sort() : 리스트 자체가 정렬되는 것이다.
num = [15, 26, 39]
# 내림차순 정렬
# return 값이 있기 때문에 변수로 받아줘야 한다.
result = sorted(num, reverse = True)
print(result)
# 결과 [39, 26, 15]
num = [15, 26, 39]
# num 이라는 리스트 자체를 정렬하는 것이다.
num.sort(reverse = True)
print(num)
# 결과 [39, 26, 15]
sorted() 인자값
- reverse = True : 내림차순 정렬, default = False
- key : key 값을 기준으로 정렬한다.
여기까지는 이해가 잘 되다가 …
예제) 성적이 낮은 순서대로 출력하기
Q. N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오.
입력 조건) 첫번째 줄에 학생의 수 N이 입력된다.(1 <N<100,000)
두 번째 줄부터 N + 1 번째 줄에는 학생의 이름을 나타내는 문자열 A와 학생의 성적을 나타내는 정수
B가 공백으로 구분되어 입력된다. 문자열 A의 길이와 학생의 성적은 100 이하의 자연수이다.
출력 조건) 모든 학생의 이름을 성적이 낮은 순서대로 출력한다. 성적이 동일한 학생들의 순서는 자유롭게 출력해도 괜찮다.
- input이 ‘문자열’ 과 정수이기 때문에 튜플(’문자열’, 숫자)로 append함수를 써서 받아야 한다.
- lambda 사용법
lambda 매개변수 : return값
인줄 알아서 예를 들어 아래와 같은 느낌인 줄 알았다.
data = [('홍길동',95),('이순신',77),('유재석',68)]
def s(student):
return student[1]
s(data)
# 출력 ('이순신', 77)
하지만 출력값이 data 리스트에 첫번째 원소인 튜플이 되어버렸다. 그래서 뭐지? 싶어서 구글링해서 알아낸 결과
str_list = ['def','good_morning','abc','niceday']
print(sorted(str_list, key=lambda x : x[1]))
# 출력값 ['abc', 'def', 'niceday', 'good_morning']
print(sorted(str_list, key=lambda x : x[2]))
# 출력값 ['abc', 'niceday', 'def', 'good_morning']
sorted 함수가 str_list에 첫번째 원소부터 접근하여 x[1]이라는 의미는 첫번쨰 원소 즉 ‘def’의 다시 첫번째 x[1]인 e를 의미하는 것이었다.
그다음은 다시 두번째 원소로 접근하여 x[1]인 ‘good_morning’의 첫번째 원소 ‘o’가 된다.
결국 str_list 순서대로 ‘def’의 ‘e’, ‘good_moring’의 ‘o’, ‘abc’의‘b’, ‘niceday’의 ‘i’ 를 정렬!
# 정답!
n = int(input())
array = []
for i in range(n):
input_data = input().split()
array.append((input_data[0], int(input_data[1])))
array = sorted(array, key = lambda student: student[1])
for student2 in array:
print(student2[1], end = ' ')
'코딩테스트' 카테고리의 다른 글
[이코테] 다익스트라 알고리즘, 우선순위 큐, heap 자료구조 (0) | 2023.03.12 |
---|---|
[BOJ] 1932 정수 삼각형 파이썬(+자세한 설명) (0) | 2023.02.25 |
[이코테] 1장 시간복잡도, 파이썬 라이브러리 순열과 조합 (0) | 2023.02.20 |
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 실패율 (0) | 2023.02.13 |
[이코테] 3장 DFS/BFS, 음료수 얼려 먹기, 미로찾기 (0) | 2023.02.09 |