일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- backjoon
- 이분탐색
- divmod
- BFS
- Set
- 백준
- python
- Combinations
- 자바
- 파이썬
- DateTime
- 위클리 챌린지
- 프로그래머스
- 그리디
- KAKAO BLIND RECRUITMENT
- 동적 계획법
- dfs
- Zip
- lambda
- java
- programmers
- 정규식
- 수학
- 정렬
- 재귀함수
- 추석맞이 코딩챌린지
- 카카오
- heapq
- Re
- 다익스트라
Archives
- Today
- Total
상상쓰
[프로그래머스] 실패율 본문
https://programmers.co.kr/learn/courses/30/lessons/42889?language=python3
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
Counter 도 써보고 싶었고 zip 도 한 번 써보고 싶었다.
Counter 를 이용하여 진행 중인 스테이지 번호의 개수를 알아낸다. print(count) = Counter({2: 3, 3: 2, 1: 1, 6: 1, 4: 1})
1번 스테이지부터 실패율을 계산한다. (T = 해당 스테이지를 클리어한 사람의 수)
zip 을 이용해 (스테이지 번호, 스테이지 실패율) 튜플을 원소로 하는 배열을 만들고 실패율에 대하여 내림차순, 실패율이 같으면 번호에 대하여 오름차순한다.
from collections import Counter
def solution(N, stages):
answer = []
result = []
count = Counter(stages)
T = len(stages)
for i in range(1, N+1):
result.append((count[i] / T) if T > 0 else 0)
T -= count[i]
for n, p in sorted(list(zip([i for i in range(1, N+1)], result)), key = lambda x : (-x[1], x[0])):
answer.append(n)
return answer
print(solution(5, [2, 1, 2, 6, 2, 4, 3, 3])) # [3, 4, 2, 1, 5]
'Coding Test' 카테고리의 다른 글
[프로그래머스] [1차] 뉴스 클러스터링 (0) | 2021.08.24 |
---|---|
[프로그래머스] 4주차_직업군 추천하기 (0) | 2021.08.23 |
[프로그래머스] 괄호 변환 (0) | 2021.08.21 |
[프로그래머스] 메뉴 리뉴얼 (0) | 2021.08.20 |
[프로그래머스] 문자열 압축 (0) | 2021.08.20 |
Comments