이번 문제에서는 2가지가 좀 힘들었다
첫째, 문제 자체가 이해하기가 힘들었다.
그냥 예제보고 유추
둘째, dictionary정렬이 어려웠다.
그래서 이 부분도 뒤에서 다뤄보자
def solution(N, stages):
# 입력값: 5, [2, 1, 2, 6, 2, 4, 3, 3]
answer = []
temp ={} #단계별 실패율 구하기위한 dictionary 정의
left_gamer = 0
for i in range(N): #stage만큼 반복문
if (i+1) in stages:
# 숫자 i의 갯수 / 남은 사람 = 전체 인원수 - 빠진사람
temp[i+1] = (stages.count(i+1) / (len(stages)-left_gamer))
# 앞stage에서 빠진 사람 추가
left_gamer = left_gamer + stages.count(i+1)
else:
temp[i+1] = 0
print(temp)
# {1: 0.125, 2: 0.42857142857142855, 3: 0.5, 4: 0.5, 5: 0}
result = sorted(temp, key=lambda x: temp[x], reverse=True)
print(result)
# [3, 4, 2, 1, 5]
answer = result
return answer
dictionary 정렬 공부!
위 문제 예제에서
정렬 전 실패율을 전부 다 구하고 나면
temp = {
1: 0.125,
2: 0.42857142857142855,
3: 0.5,
4: 0.5,
5: 0
}
1. sorted(temp) : 키순으로 키만 반환!
값은 전혀 신경쓰지않고
키끼리 비교만! 키만 반환 !
2. sorted(temp, reverse=True) : 키 역순으로 키만 반환!
값은 전혀 신경쓰지 않고
키끼리만 비교! 키만 반환
3.sorted(temp, key = lambda x : temp[x]) : 값 순서로 키만 반환!
값으로 비교! 키만 반환
4.sorted(temp, key = lambda x : temp[x], reverse=True) : 값 역순으로 키만 반환!
값 역순으로 비교! 키만 반환!
key value가 같이 리턴되는 정렬은
다른 포스팅에서 다시 정리 하기로!
끝!
2019 KAKAO BLIND RECRUITMENT 실패율
https://school.programmers.co.kr/learn/courses/30/lessons/42889?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'프로그래밍 이야기 > 파이썬 코딩 테스트 스터디' 카테고리의 다른 글
파이썬 코딩테스트 스터디 3주차 #3 - 10진수를 2진수로 변환하기 (0) | 2024.07.07 |
---|---|
파이썬 코딩테스트 스터디 3주차 #1 - 스택 개념 / 정의 (0) | 2024.07.06 |
파이썬 코딩테스트 스터디 2주차 #6 - 문제 05 행렬의 곱 (0) | 2024.06.24 |
파이썬 코딩테스트 스터디 2주차 #5 - 문제 04 모의고사 - 수포자 (0) | 2024.06.14 |
파이썬 코딩테스트 스터디 2주차 #4 - 문제 03 두 개 뽑아서 더하기 (0) | 2024.06.09 |