일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- BFS
- dfs
- lambda
- 파이썬
- backjoon
- Combinations
- 동적 계획법
- programmers
- 정렬
- 프로그래머스
- 추석맞이 코딩챌린지
- Set
- 수학
- DateTime
- java
- 이분탐색
- 자바
- 카카오
- 다익스트라
- heapq
- 그리디
- Zip
- python
- 백준
- KAKAO BLIND RECRUITMENT
- 정규식
- Re
- divmod
- 재귀함수
- 위클리 챌린지
Archives
- Today
- Total
상상쓰
[프로그래머스] 실패율 본문
https://programmers.co.kr/learn/courses/30/lessons/42889?language=python3
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