관리 메뉴

솜씨좋은장씨

[BaekJoon] 5800번 : 성적 통계 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 5800번 : 성적 통계 (Python)

솜씨좋은장씨 2021. 9. 5. 12:45
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 성적 통계 입니다.

백준 5800번 성적 통계 문제를 파이썬으로 풀이하였습니다.

 

5800번: 성적 통계

첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다

www.acmicpc.net

👨🏻‍💻 문제 풀이

성적 통계 문제는 각 반의 학생수와 수학 성적 목록이 주어지면 

5 30 25 76 23 78

가장 높은 점수, 가장 낮은 점수, 점수를 오름차순으로 정렬하였을때 각 점수사이의 차이 중 가장 큰 차이를 

Class 1
Max 78, Min 23, Largest gap 46

위와 같은 형식으로 출력하는 문제입니다.

 

먼저 각 줄에 입력되는 문자열의 내용 중 맨 앞의 값이 학생 수 그 뒤의 값들이 수학 성적이므로

grade_list = list(map(int, grade_list.split()))[1:]

split으로 문자열을 나눈 다음 맨 앞의 값을 제외한 나머지의 값 만을 성적 목록에 남깁니다.

gap_list = []
    
grade_list = sorted(grade_list)
    
for i in range(len(grade_list) - 1):
    gap = grade_list[i+1] - grade_list[i]
        
    gap_list.append(gap)

그 다음 해당 성적 목록을 오름차순으로 정렬하고 성적목록의 길이 - 1 길이만큼 반복문을 실행하면서 

점수간의 차이를 구해 gap_list에 저장합니다.

f"Max {grade_list[-1]}, Min {grade_list[0]}, Largest gap {max(gap_list)}"

성적 중 최대 값을 -1 인덱스로 접근 최소값을 0으로 접근 갭중 가장 큰 값을 max로 구해준다음

마지막으로 출력모양을 f-string으로 만들어주면 끝! 입니다.

 

전체 코드는 아래와 같습니다.

👨🏻‍💻 코드 ( Solution )

def grade_statistics(grade_list):
    grade_list = list(map(int, grade_list.split()))[1:]
    
    gap_list = []
    
    grade_list = sorted(grade_list)
    
    for i in range(len(grade_list) - 1):
        gap = grade_list[i+1] - grade_list[i]
        
        gap_list.append(gap)
        
    
    return f"Max {grade_list[-1]}, Min {grade_list[0]}, Largest gap {max(gap_list)}"


if __name__ == "__main__":
    for idx in range(1, int(input()) + 1):
        grade_list = input()
        print(f"Class {idx}")
        print(grade_statistics(grade_list))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments