관리 메뉴

솜씨좋은장씨

[Programmers] 등수 매기기 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 등수 매기기 (Python)

솜씨좋은장씨 2023. 2. 9. 23:41
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 등수 매기기 입니다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

👨🏻‍💻 문제 풀이

1. 각 학생의 평균 점수를 담은 리스트를 만들어 줍니다.

avg_score_list = [(sum(score) / len(score)) for score in score_list]

2. 이 평균 점수 리스트를 내림차순 한 리스트를 활용하여 평균 점수를 key 값으로 rank 정보를 value 값으로 한 dictionary 를 만들어 줍니다.

def make_rank_dict(avg_score_list):
    rank_dict = {}
    
    set_score_list = sorted(avg_score_list, reverse=True)
    
    for rank, score in enumerate(set_score_list, start=1):
        if score in rank_dict:
            continue
        rank_dict[score] = rank
        
    return rank_dict

평균 점수 리스트를 내림차순 한 리스트를 만들때에는 sorted( reverse=True ) 를 사용했습니다.

set_score_list = sorted(avg_score_list, reverse=True)

enumerate 를 활용하여 리스트에서 하나씩 꺼내올때

for rank, score in enumerate(set_score_list, start=1):

idx 값을 같이 반환 하도록 하고 이 idx 값을 rank 정보로 활용하였습니다.

이애 start = 1 옵션을 주어 idx 가 1부터 시작되도록 하였습니다.

if score in rank_dict:
    continue

dictionary 를 만들때 이미 dictionary 에 key 값으로 사용한 점수인 경우 continue 로 넘어가도록 하였습니다.

rank_dict = make_rank_dict(avg_score_list=avg_score_list)

3. 평균 점수를 리스트에서 하나씩 꺼내와 이 값을 key 값으로 rank 정보를 담은 dictionary 에서 rank 정보를 꺼내어옵니다.

[rank_dict[avg_score] for avg_score in avg_score_list]

👨🏻‍💻 코드 ( Solution )

def make_rank_dict(avg_score_list):
    rank_dict = {}
    
    set_score_list = sorted(avg_score_list, reverse=True)
    
    for rank, score in enumerate(set_score_list, start=1):
        if score in rank_dict:
            continue
        rank_dict[score] = rank
        
    return rank_dict
        

def solution(score_list):
    avg_score_list = [(sum(score) / len(score)) for score in score_list]
    
    rank_dict = make_rank_dict(avg_score_list=avg_score_list)
    
    return [rank_dict[avg_score] for avg_score in avg_score_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