[프로그래머스](python) 실패율 - 2019 KAKAO BLIND RECRUITMENT

berry ·2021년 7월 9일
0

Algorithm

목록 보기
52/77
post-thumbnail

문제


🧩 수도 코드

  • 실패율을 딕셔너리로 넣어 value로 계산하고 key를 넣기
  • for i in stages:
    i가 다음으로 넘어갈 때마다 1/8, 3/7, 2/4 이런 식으로
    i만큼 분모가 줄어드므로 조건에 넣기

🏁 내 코드

def solution(n, stages):
    answer = []
    percent_fail = {}
    stage_of_people = len(stages)
    for i in range(1, n+1) #1부터 n+1까지 순서대로 count(i) 출력
        counter = stages.count(i)
        if stage_of_people == 0: # 스테이지에 도전한 사람이 0이면 실패율 0
            percent_fail[i] = 0
        else: #실패율 : 스테이지에 도전중인 사람 / 스테이지에 도달한 사람 수 
            percent_fail[i] = counter / stage_of_people
        stage_of_people = stage_of_people - counter # 스테이지에 도달한 사람 수 - i의 개수

    answer = [i[0] for i in sorted(percent_fail.items(), key = lambda x: (-x[1],x[0]))] 
    return answer 

(percent_fail.items(), key = lambda x: (-x[1],x[0]))

  • percent_fail.items() 리스트에서
    percent_fail.items()[1] 로 내림차순 정렬한 다음 (실패율이 큰 순서대로 정렬)
    percent_fail.items()[0] 로 오름차순 정렬 해줌 (실패율이 같으면 작은 숫자부터)

[i[0] for i in sorted(리스트)]

  • sorted된 리스트에서 i[0] (percent_fail 은 딕셔너리 형태이므로 key만 출력)

profile
Engineer

0개의 댓글