컴퓨터는 잘못이 없다..

[알고리즘]정렬_성적이 낮은 순서로 학생 출력하기(파이썬 sort(),sorted()의 key매개변수, 람다함수 사용해보기) 본문

공부/알고리즘(파이썬)

[알고리즘]정렬_성적이 낮은 순서로 학생 출력하기(파이썬 sort(),sorted()의 key매개변수, 람다함수 사용해보기)

도토리까꿍v 2021. 1. 15. 21:33
Contents 접기

['성적이 낮은 순서로 학생 출력하기' 문제 설명]

-난이도 : ★☆

-풀이시간 : 20분

-시간 제한 : 1초

-메모리 제한 : 128MB

-기출 : D기업 프로그래밍 콘테스트 예선

-출처 : 이것이 코테다(p.180)

 

-문제 :

N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다.

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

 

-입력조건:

첫 번째 줄에 학생의 수 N이 입력된다. (1<=N<=100,000)

두 번째 줄부터 N+1번째 줄에는 학생의 이름을 나타내는 문자열 A와 학생의 성적을 나타내는 정수 B가 

공백으로 구분되어 입력된다. 문자열 A의 길이와 학생의 성적은 100이하의 자연수이다.

 

-출력조건:

모든 학생의 이름을 성적이 낮은 순서대로 출력한다. 성적이 동일한 학생들의 순서는 자유롭게 출력해도 괜찮다.

 

-입력예시1

2
홍길동 95
이순신 77

-출력예시1

이순신 홍길동

 

['성적이 낮은 순서로 학생 출력하기' 답안1]

n=int(input())

#[(),(),()..] 이렇게 입력받을 수 있다.
arr=[]
for i in range(n) :
    data = input().split()
    arr.append((data[0], int(data[1])))


#arr내 튜블의 index 1번째 있는 요소로 오름차순 정렬 해준다.
arr = sorted(arr, key=lambda student:student[1])

#정렬이 수행된 결과를 출력한다.
for i in arr :
    print(i[0],end=' ')

▲답안1 설명

람다함수를 이용하여 풀어보았다. 

 

['성적이 낮은 순서로 학생 출력하기' 답안2]

n=int(input())

#[(),(),()..] 이렇게 입력받을 수 있다.
arr=[]
for i in range(n) :
    data = input().split()
    arr.append((data[0], int(data[1])))

#setting함수
def setting(data) :
    return data[1]

#arr내 튜블의 index 1번째 있는 요소로 오름차순 정렬 해준다.
arr = sorted(arr, key=setting)

#정렬이 수행된 결과를 출력한다.
for i in arr :
    print(i[0], end=' ')

▲답안2 설명

람다함수를 쓰지 않고 풀어보았다.

 

 

[파이썬]

-sorted(), sort()의 key매개변수 와 람다함수 사용하기 

sorted()나 sort()를 이용할 때는 key 매개변수를 입력받을 수 있다. key 값으로는 하나의 함수가 들어가야 하며 이는 정렬기준이 된다. 

Comments