250x250
반응형
Notice
Recent Posts
Recent Comments
Link
종식당
[프로그래머스 lv.1] 2019 KAKAO BLIND RECRUITMENT 실패율 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42889
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 설명
stages리스트에는 사용자가 현재 도전 중인 stage가 저장되어 있으며 만약 총 8명의 사용자가 있다고 해보자.
stages리스트에는 총 8개의 stage가 저장되어 있을 것이며 1번 stage가 하나 있다면 1번 stage의 실패율은 1/8이라고 할 수 있다.
다음으로 2번 stage가 3개 있다면 1번 stage에 도전 중인 사용자 한 명을 제외한 총 7명의 사용자 중에서 3명이 도전하고 있으니 3/7로 실패율을 정의할 수 있다.
이런 식으로 모든 stage에서 실패율을 구하고 이를 실패율을 기준으로 내림차순으로 정렬하여 return 하면 된다.
이때, 예외처리를 하나 해주어야 하는데
스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.
이에 대한 실패율은 0으로 처리하면 된다.
- 제출 코드
def solution(N, stages):
dict = {} #딕셔너리에 스테이지와 실패율 저장
user = len(stages) #모든 사용자
for i in range(1,N+1):
not_clear_user = stages.count(i) #통과 못한 사용자
if user == 0:
fail_rate = 0
else:
fail_rate = not_clear_user/user #실패율
dict[i] = fail_rate
user -= not_clear_user #총 사용자 업데이트
result = sorted(dict.items(), key = lambda x : -x[1]) #실패율을 기준으로 내림차순 정렬
answer = []
for i in range(len(result)):
answer.append(result[i][0])
return answer
- 코드 설명
먼저 각 stage에 해당하는 실패율을 저장하기 위해 딕셔너리를 하나 만들고 for문을 돌면서 각각의 stage에 도전 중인 사용자가 몇 명인 지를 count()를 통해 구해주었다. 그리고 실패율을 계산한 후 딕셔너리에 stage를 key, stage에서의 실패율을 value로 저장하였다. 그 후 이전 stage에 있던 사용자는 총사용자에서 제외를 해주고 실패율을 계산해야 하기 때문에 계속 갱신해 주었다.
result = sorted(dict.items(), key = lambda x : -x [1]) 이 코드를 통해 실패율을 기준으로 내림차순으로 정렬해 주었다.
자세히 살펴보면 dict.items()를 통해 딕셔너리에서 key, value쌍을 뽑아낼 수 있고 key = lambda x : -x [1]이를 이용해서 내림차순으로 정렬할 수 있다. x [0]에는 각각의 stage, x [1]에는 실패율이 저장되어 있을 것이고 이를 -x [1]로 나타내었으니 내림차순으로 정렬될 것이다.
그리고 정렬된 리스트에서 stage만 뽑아서 새로운 리스트를 만들어 준 후 이를 반환하면 된다.
그리고 초반에 언급했던 실패율을 0으로 처리하는 부분은 간단하게 예외처리를 해주면 된다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스 lv.2] 짝지어 제거하기 (1) | 2024.07.16 |
---|---|
[프로그래머스 lv.1] 2022 KAKAO BLIND RECRUITMENT 주차 요금 계산 (0) | 2024.04.05 |
[프로그래머스 lv.1] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 (0) | 2024.03.19 |
[프로그래머스 lv.1] 2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효기간 (0) | 2024.03.19 |
[프로그래머스 lv.2] 탐욕법(Greedy) 구명보트 (4) | 2024.01.26 |