Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘 공부
- 백준 온라인 저지
- iOS개발
- Clean Architecture
- 정렬
- Swift공부
- SwiftUI
- ios
- swift
- UIKit
- 안드로이드 공부
- greedy algorithm
- Android
- 프로그래머스
- dfs
- Autolayout
- 파이썬
- 알고리즘
- Algorithm
- 파이썬 풀이
- Level 1
- 앱개발
- Python
- 백준온라인저지
- Kotlin
- 오토레이아웃
- 그리디 알고리즘
- error
- 공부
- BFS
Archives
- Today
- Total
Tori의 개발 공부
[Level 1] [python] 실패율 본문
문제
파이썬 문제 풀이
def solution(N, stages):
dic = {}
answer = []
user = len(stages)
for i in range(1, N+1) :
if user != 0 :
# 남아있는 유저가 있다면
count = stages.count(i)
dic[i] = count/user
user -= count
else :
dic[i] = 0
for key, _ in sorted(dic.items(), key=lambda x:(-x[1], x[0])):
answer.append(key)
return answer
실패율을 가지고 내림차순으로 스테이지 번호를 출력해야 하기 때문에 각 스테이지 번호에 대한 실패율을 저장해야 했다.
즉 스테이지 번호와 실패율을 쌍으로 기록해야하기 때문에 딕셔너리 자료형을 선택했다.
딕셔너리를 사용해 스테이지를 키로, 그에 대한 실패율을 값으로 저장을 한다.
이제 실패율을 구하기 위해서 분모에 해당하는 스테이지에 도달한 플레이어 수를 user로 칭하였다.
user에는 처음에 len(stage)값이 들어가는데 이는 stage변수가 게임을 이용하는 사용자가 멈춰있는 스테이지 번호를 담고 있는 배열이기 때문에 사용자 정보를 뜻하므로 len(stage)는 전체 사용자를 의미한다.
스테이지 1단계는 전체 사용자가 모두 도달했기 때문에 우선 전체 사용자 값을 사용한다.
2단계로 가면 1단계에 멈춰있는 유저수를 user값에서 빼주고, 3단계로 가면 1단계 유저수가 이미 빠져있는 user변수에서 2단계에 멈춰있는 유저수를 빼 주면 된다.
해당 스테이지에 멈춰있는 유저수는 실패율의 분자 값으로 count함수를 통해 구할 수 있었다.
count()
찾고자 하는 항목이 리스트에 몇 개 들어있는지 확인하는 함수
list.count(찾을 항목) 형태로 사용한다.
'Algorithm > 프로그래머스 문제 풀이' 카테고리의 다른 글
[Level 2] [python] 롤케이크 자르기 (0) | 2022.11.19 |
---|---|
[Level 1] [python] 기사단원의 무기 (0) | 2022.11.17 |
[Level 1] [python] 크레인 인형뽑기 게임 (0) | 2022.01.20 |
[Level 1] [python] K번째수 (0) | 2021.12.29 |
[Level 1] [python] 신규아이디 추천 (0) | 2021.12.28 |