본문 바로가기
algorithm/programmers

복서 정렬하기 [프로그래머스]

by hoonzii 2021. 9. 7.
반응형

저번 4주차 때와 마찬가지로 딕셔너리 소팅 문제로 접근해 풀었다.

 

python dictionary sort 정리 (sort by key & value)

 

python dictionary sort 정리 (sort by key & value)

매번 헷갈리고 알고리즘 문제 풀때마다 찾아보길래 이번 기회에 블로그에 적음으로 찾는 수고를 덜고자 한다. 프로그래머스에서 이번에 위클리 챌린지라고 leetcode에서 하는것 처럼 매주 문제

hoonzi-text.tistory.com

각 복서 마다 속성들

  • 몇번 이겼는지 ⇒ win_count
  • 자기보다 무거운 사람과 싸워서 이겼는지 ⇒ weight_count
  • 몇번 선수인지 ⇒ index
  • 자기 몸무게는 몇인지 ⇒ weights[index]

등을 dictionary로 저장하고

해당 속성별로 정렬하면 되는 문제였다.

나는 하나 헤맸던 점이 (승리 횟수 / 경기 횟수) 에서 경기 횟수를 자기 자신과의 경기만 제외했었다.

그랬더니 계속 틀림...

문제에도 명시 되었다 싶이 "N"으로 명시된 경기가 존재하고 이건 경기 횟수에서 제외해야 한다.

 

def solution(weights, head2head):
    answer = []
    
    boxer_score = list()
    for index, plays in enumerate(head2head):
        win_count = 0
        none_count = 0
        weight_count = 0
        for jndex, result in enumerate(plays): # index번째 복서의 경기 기록을 반복
            if result == "W": # 이기면 count+=1
                win_count += 1
                if weights[index] < weights[jndex]: #몸무게 초과일 경우 weight_count+=1
                    weight_count += 1
            elif result == "N": #안한 경기는 경기 횟수에서 제외하기 위해
                none_count += 1
            
        temp_score = dict() # index번째 복서의 정보를 dictionary 로 저장
        temp_score["number"] = index+1
        if len(plays)-none_count == 0:
            temp_score["score"] = 0
        else:
            temp_score["score"] = win_count / (len(plays)-none_count)
        temp_score['weight_count'] = weight_count
        temp_score['weight'] = weights[index]
        
        boxer_score.append(temp_score)
        
    sorted_list = sorted(boxer_score, 
                         key=lambda x : (-x['score'], -x['weight_count'], -x['weight'], x['number']))
    
    for item in sorted_list:
        answer.append(item['number'])
                
    
    return answer

 

이거는 문제

https://programmers.co.kr/learn/courses/30/lessons/85002

 

코딩테스트 연습 - 6주차

복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요

programmers.co.kr

 

반응형

'algorithm > programmers' 카테고리의 다른 글

예상 대진표 [프로그래머스]  (0) 2021.09.23
입실 퇴실 [프로그래머스]  (0) 2021.09.15
H-index [프로그래머스]  (0) 2021.07.06
소수 찾기 [프로그래머스]  (0) 2021.07.05
오픈채팅방 [프로그래머스]  (0) 2021.07.02

댓글