[이것이 코딩 테스트다] 정렬 - 성적이 낮은 순서로 학생 출력하기

YEAh·2021년 3월 13일
0
post-thumbnail

정렬
데이터를 특정 기준에 따라서 순서대로 나열

  • 선택 정렬 : 가장 작은 것을 선택
  • 삽입 정렬 : 특정한 데이터를 적절한 위치에 삽입
  • 퀵 정렬 : 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꿈. 피벗(기준) 사용(ex. 리스트에서 첫 번째 데이터를 피벗으로 정한다)
  • 계수 정렬(count sort) : 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때만 사용가능함 빠른 정렬 알고리즘 (모든 범위를 담을 수 있는 크기의 리스트를 선언)
    • 별도의 리스트를 선언하고 그 안에 정렬에 대한 정보를 담음
    • 가장 큰 데이터와 가장 작은 데이터의 차이가 1,000,000을 넘지 않을 때 효과적으로 사용

✅ 문제

N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오.

입력 예시

2
홍길동 95
이순신 77

출력 예시

이순신 홍길동


💻 코드

N = int(input())

array = []

for i in range(N):
    a, b = input().split()
    array.append((a, int(b)))

def setting(data):
    return data[1]

result = sorted(array, key=setting)

for i in result:
    print(i[0], end=' ')

설계

학생 정보를 튜플로 저장한다. 튜플 중 학생의 점수 데이터를 return하는 setting 함수를 만들어 sorted 함수의 key에 적용하였다.

➕ 다른 풀이

setting 함수를 따로 만들지 않고 lambda 식 사용

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 student in array:
    print(student[0], end=' ')
profile
End up being.

0개의 댓글