본문 바로가기
프로그래머스

프로그래머스: 실패율 | Python

by sxlvxrjxms2s2itsmes2s2 2024. 1. 24.

https://school.programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


입출력 예

입출력 예 #1
1번 스테이지에는 총 8명의 사용자가 도전했으며, 이 중 1명의 사용자가 아직 클리어하지 못했다. 따라서 1번 스테이지의 실패율은 다음과 같다.
- 1 번 스테이지 실패율 : 1/8
2번 스테이지에는 총 7명의 사용자가 도전했으며, 이 중 3명의 사용자가 아직 클리어하지 못했다. 따라서 2번 스테이지의 실패율은 다음과 같다.
- 2 번 스테이지 실패율 : 3/7
마찬가지로 나머지 스테이지의 실패율은 다음과 같다.
- 3 번 스테이지 실패율 : 2/4
- 4번 스테이지 실패율 : 1/25번 스테이지 실패율 : 0/1

각 스테이지의 번호를 실패율의 내림차순으로 정렬하면 다음과 같다.
[3,4,2,1,5]


만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다.
스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.

 

 

1. 풀이

def solution(N, stages):
    answer = []
    player = len(stages)
    false = {} #실패율
    
    for i in range(1,N+1):
        if player == 0: #스테이지 도달한 플레이어가 0명일 때
            false[i] = 0
        else:
            false[i] = stages.count(i)/player
            player -= stages.count(i)
            
    answer = sorted(false, key=lambda x : false[x], reverse=True)
            
    return answer

 

  • 같은 값을 가진 항목은 입력 순서에 따라 정렬되어 출력됩니다.

 

2. 문제와 관련한 기초 개념 (내가 헷갈린 것)

1) lambda()

  • sorted() 함수와 함께 사용하기

일반적인 형태:

  sorted(iterable, key=key, reverse=reverse)  

 

numbers = [4, 2, 7, 1, 9]
sorted_numbers = sorted(numbers, key=lambda x: x**2) #각 숫자를 제곱한 값에 따라 정렬하도록 지정
print(sorted_numbers)

 

>>> [ 1, 4, 7, 9, 16 ]

 

reverse = True 적용 시 내림차순 정렬됩니다.