관리 메뉴

솜씨좋은장씨

[Programmers] 2019 KAKAO BLIND RECRUITMENT 실패율 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 2019 KAKAO BLIND RECRUITMENT 실패율 (Python)

솜씨좋은장씨 2021. 2. 12. 00:43
728x90
반응형

코딩 1일 1문제!

오늘의 문제는 프로그래머스의 2019 카카오 블라인드 채용 문제였던 

실패율 입니다.

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

Solution

def solution(N, stages):
    answer = []
    
    fail_percent = {}
    
    num_of_people = len(stages)
    
    for i in range(1, N+1):
        count = stages.count(i)
        if num_of_people == 0:
            fail_percent[i] = 0
        else:
            fail_percent[i] = count / num_of_people
        
        num_of_people = num_of_people - count
        
    answer = [stage[0] for stage in sorted(fail_percent.items(), key=lambda x: (-x[1], x[0]))]    
    
    return answer

Solution 풀이

먼저 각 스테이지별 실패율을 저장할 fail_percent dictionary를 하나 만들어 줍니다.

도전하는 사람의 수는 주어진 stages list의 길이와 같습니다.

1부터 주어진 숫자 N까지 반복을 하며 도전하는 사람들이 어느 스테이지에 멈추어 있는지 카운팅을 하고

이를 남아있는 사용자 수로 나누어 준 뒤 fail_percent에 넣어줍니다.

이 때 첫 번째 스테이지에서 모든 사용자들이 멈추어 있을 경우

그 후의 스테이지에서는 num_of_people이 0이 될 수 있으므로

그 경우에는 그냥 0을 넣어 주도록 합니다.

실패율을 내림차순으로 각 스테이지 기준으로 오름차 순 정렬을 하고 이때 각 스테이지만 리스트에 남기면

정답입니다.

 

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments