관리 메뉴

솜씨좋은장씨

[BaekJoon] 15702번 : 중간고사 채점 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 15702번 : 중간고사 채점 (Python)

솜씨좋은장씨 2022. 9. 16. 12:29
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 중간고사 채점 입니다.

 

15702번: 중간고사 채점

이번 중간고사에는 총 N문제가 나왔고, 응시한 사람의 수는 M명이다. 각 문제의 배점과 각 사람의 결과가 주어졌을 때, 가장 높은 점수를 획득한 사람을 구하는 프로그램을 작성하시오.

www.acmicpc.net

👨🏻‍💻 코드 ( Solution )

def calculate_score_from_exam_result(score_list, exam_result):
    right_problem_score_list = [
        score_list[result[0]] for result in enumerate(exam_result) 
        if result[1] == "O"
    ]
    
    
    return sum(right_problem_score_list) if right_problem_score_list else 0
    


def grade_midterm_exam(score_list, exam_result_dict):
    student_exam_score_dict = {}
    
    for student_num in exam_result_dict.keys():
        exam_result = exam_result_dict[student_num]
        
        student_exam_score_dict[student_num] = calculate_score_from_exam_result(
            score_list=score_list, exam_result=exam_result
        )
        
    sorted_result = sorted(
        student_exam_score_dict.items(), 
        key=lambda x: (-x[1], x[0])
    )
    
    return f"{sorted_result[0][0]} {sorted_result[0][1]}"
    
    
if __name__ == "__main__":
    N, M = map(int, input().split())
    
    score_list = list(map(int, input().split()))
    
    exam_result_dict = {}
    
    for _ in range(M):
        exam_result = input().split()
        
        exam_result_dict[int(exam_result[0])] = exam_result[1:]
    
    print(grade_midterm_exam(score_list=score_list, exam_result_dict=exam_result_dict))
 

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