본문 바로가기

IT/Python

[백준] 14729번 칠무해 [Python] - 정렬

728x90

 

 

소수점 셋째짜리까지 표시된 점수들 중 낮은 점수 7개 오름차순으로 출력

 

더보기

문제

조$($Joe$)$는 중앙대학교 교수이고, 논리회로 설계 과목을 담당하고 있다. 그는 수업을 하면서 7명의 학생을 제외한 나머지 학생들에게 좋은 학점을 주겠다고 약속을 하였다.

Joe 교수님을 돕기 위해서 학생들의 최종 성적이 주어질 때, 그의 연구실인 You See Lab으로 데려갈 성적이 좋지 못한 7명의 학생, 칠무해의 성적을 뽑아보자.

입력

첫째 줄에 학생의 수 N$(8 ≤ N ≤ 10,000,000)$이 주어진다.

둘째 줄부터 N개의 줄에는 학생들의 성적이 무작위로 주어진다. 성적은 최소 0점부터 최대 100점까지 0.001 점 단위로 부여된다.

출력

하위 7명의 성적을 점수가 낮은 순으로 각 줄마다 출력한다. 하위 7명의 성적의 커트 라인에 동점자가 있을 경우에도 7명만 출력을 하면 된다.

14729번: 칠무해 $($acmicpc.net$)$

 

리스트에 7개까지만 점수를 받고, 정렬 후

다른 점수들과 리스트 내 최대 점수와 비교해서 더 작은 점수로 교체 후 출

import sys
N = int(sys.stdin.readline())
li = []
# 7개까지만 리스트에 저장 / 정렬
for i in range(7):
    # 대소 비교를 위해 float로 받기
    n = float(sys.stdin.readline())
    li.append(n)
li.sort()
    # 그 이후는 가장 마지막 점수(현재 리스트 내 가장 큰 점수)랑 새로운 점수랑 비교해서 작은 점수를 저장하고, 정렬 
for i in range(7, N):
    n = float(sys.stdin.readline())
        if n < li[6]:
            li[6] = n
            li.sort()
for n in li:
    # 소수점 셋째자리까지 출력
    print(f"{n:.3f}")

 

더보기

예제 입력 1 

8
20.000
70.000
50.000
30.000
70.000
30.000
60.000
70.000

예제 출력 1 

20.000
30.000
30.000
50.000
60.000
70.000
70.000