반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120882
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(score):
rank_dic = {}
rank = []
means = []
result = []
for e, m in score:
mean = (e + m) / 2
rank_dic[mean] = rank_dic.get(mean, 0)
rank.append(mean)
means.append(mean)
rank.sort(reverse=True)
for i in range(len(rank)):
if rank_dic[rank[i]] == 0:
rank_dic[rank[i]] = i+1
else:
pass
for mean in means:
result.append(rank_dic[mean])
return result
다른 사람의 풀이를 확인해보니 이렇게 길게 코드를 작성하지 않아도 되는 문제였지만..
스스로 풀어봤던 방법을 남겨보려고 합니다.
- rank_dic : 영어와 수학의 평균들이 몇등인지 확인할 딕셔너리
- rank : 평균들을 저장한 후 정렬할 리스트
- means : 평균들의 원본 순서를 저장할 리스트
- result : 결과를 저장할 리스트
for e, m in score:
mean = (e + m) / 2
rank_dic[mean] = rank_dic.get(mean, 0)
rank.append(mean)
means.append(mean)
입력받은 score를 반복문을 통하여 영어와 수학의 평균(mean)을 계산하고 아래와 같은 작업을 수행합니다.
- rank_dic에는 mean을 key로 사용하고 value를 0으로 초기화
- rank, means에는 계산한 mean을 저장
rank.sort(reverse=True)
rank 리스트를 내림차순 정렬을 통하여 등수를 구합니다.
for i in range(len(rank)):
if rank_dic[rank[i]] == 0:
rank_dic[rank[i]] = i+1
else:
pass
정렬된 리스트를 반복하면서 rank_dic의 key로 접근하여
초기값 0이라면 i+1 한 등수를 저장하고 0이 아니라면 이미 등수를 매겼기때문에 pass합니다.
for mean in means:
result.append(rank_dic[mean])
원본 순서를 가진 means를 반복을 통하여 등수가 매겨진 rank_dic에서 등수를 뽑아 결과에 저장합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 다음 큰 숫자 파이썬(Python) (0) | 2022.11.16 |
---|---|
[코딩테스트] 프로그래머스 숫자의 표현 파이썬(Python) (0) | 2022.11.15 |
[코딩테스트] 프로그래머스 안전지대 파이썬(Python) (0) | 2022.11.14 |
[코딩테스트] 프로그래머스 평행 파이썬(Python) (0) | 2022.11.14 |
[코딩테스트] 프로그래머스 옹알이(1) 파이썬(Python) (0) | 2022.11.14 |