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

Bini by Bini·2023년 2월 3일
0

코테

목록 보기
3/24

❓문제

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

입력조건
첫 번째 줄에 학생의 수 N이 입력된다. (1 ≤ N ≤ 100,000)
두 번째 줄부터 N + 1 번째 줄에는 학생의 이름을 나타내는 문자열 A와 학생의 성적을 나타내는 정수 B가 공백으로 구분되어 입력된다. 문자열 A의 길이와 학생의 성적은 100 이하의 자연수이다.

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

입력 예시
2
홍길동 95
이순신 77

출력 예시
이순신 홍길동


💭 아이디어

한줄에 이름과 성적을 입력 받았을 때 input().split()을 통해 공백 기준으로 나누고 리스트화 해준다.
이름은 그대로 문자열, 성적의 경우 int로 형변환을 해준 후 튜플로 array에 append 해준다.
key를 이용하여 성적을 기준으로 정렬한다.


❗ 풀이

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 x: x[1])

for i in range(n):
    print(array[i][0], end=" ")

✅ Comment

sorted()
원본 내용을 바꾸지 않고, 정렬한 값 반환한다.
list, tuple, dictionary, str에 모두 사용 가능하다.
key를 통해 정렬 기준을 정할 수 잇다.

sort()
원본 자체를 수정하고, 반환값이 없다.
tuple, dictionary, str에는 사용이 불가능하다. list에만 가능하다.
key를 통해 정렬 기준을 정할 수 있다.

profile
My Precious Records

0개의 댓글