반응형
저번 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 |
댓글