반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120882
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 정답 변수 answer선언 후 score만큼 방을 만들어 각 원소를 0으로 초기화합니다.
2. 배열의 index와 평균값을 저장할 idx_avg_dict선언 후 빈 객체로 초기화합니다.
📔 풀이과정
1. score에 대해 for loop를 수행하며 index별 평균값을 idx_avg_dict에 key, value로 각각 저장해줍니다.
2. 평균값을 tuple내 key로 사용해 내림차순으로 정렬해줍니다.
3. rank, 이전 평균값 prev_avg, 같은 rank 수 same_cnt선언 후 각각 1, -1, 0으로 초기화합니다.
4. idx_avg_dict에 대해 loop를 수행하며 다음을 진행합니다. 4-1. 이전 평균값이 현재 평균값과 같다면 same_cnt를 1증가시켜줍니다. 4-2. 다르다면 prev_avg값을 현재 평균값으로 갱신하며 rank에 same_cnt값을 더해 공동 랭킹을 구해줍니다. 4-3. 갱신된 rank값을 answer의 idx번째에 저장해줍니다.
📔 정답 출력 | 반환
answer를 반환합니다.
📕 Code
📔 Python3
def solution(score):
answer = [0] * len(score)
idx_avg_dict = {}
for i, s in enumerate(score):
s = score[i]
avg = (s[0] + s[1]) / 2
idx_avg_dict[i] = avg
idx_avg_dict = dict(sorted(idx_avg_dict.items(), key = lambda item: item[1], reverse=True))
rank = 1
prev_avg = -1
same_cnt = 0
for idx, avg in idx_avg_dict.items():
if prev_avg == avg:
same_cnt += 1
else:
prev_avg = avg
rank += same_cnt
same_cnt = 1
answer[idx] = rank
return answer
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Python3) - 프로그래머스(코딩테스트 입문) : 평행 (0) | 2024.11.03 |
---|---|
(Python3) - 프로그래머스(코딩테스트 입문) : 유한소수 판별하기 (0) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 로그인 성공? (0) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 치킨 쿠폰 (0) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 캐릭터의 좌표 (0) | 2024.11.03 |