728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/42889
<문제 풀이>
- python 배열의 count() 함수를 이용하여 계산해야겠다고 생각
- 실패율을 기준으로 내림차순 정렬하되, 출력은 스테이지 번호를 출력하라 했으므로 dict() 사용
- 스테이지에 도달한 플레이어 수는 스테이지가 올라갈수록 그 전의 모든 플레이어 수가 없어지므로 total 변수 사용
- ZeroDivisonError를 대비하여 try/except 구문 처리
<코드>
#1차시도 실패. 1,6,7,9,13,23,24,25
def solution(N, stages):
fail = {}
for i in range(1,N+1):
fail[i] = 0
total = 0
for i in range(N):
total += stages.count(i)
fail[i+1] = stages.count(i+1)/(len(stages)-total)
result = dict(sorted(fail.items(), key=lambda x:-x[1]))
return list(result.keys())
#성공
def solution(N, stages):
fail = {}
total = 0
for i in range(1,N+1):
fail[i] = 0
for i in range(N):
try:
total += stages.count(i)
fail[i+1] = stages.count(i+1)/(len(stages)-total)
except:
fail[i+1] = 0
result = dict(sorted(fail.items(), key=lambda x:-x[1]))
return list(result.keys())
#이취코 답
def solution(N, stages):
answer = []
length = len(stages)
for i in range(1,N+1):
count = stages.count(i)
if length == 0:
fail = 0
else:
fail = count / length
answer.append((i,fail))
length -= count
answer = sorted(answer, key=lambda t:t[1], reverse=True)
answer = [i[0] for i in answer]
return answer
<고쳐야 할 점>
- 예외 처리 종류 및 대처방법 공부하기
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[탐욕법] 프로그래머스 L1 '체육복' (Python) (0) | 2021.11.22 |
---|---|
[탐욕법] 난이도1, 2019 국가 교육기관 코딩 테스트 '큰 수의 법칙' (Python) (0) | 2021.11.22 |
[정렬] 난이도1, 백준 18310번 '안테나' (Python) (0) | 2021.11.17 |
[정렬] 백준 10825번 '국영수' (Python) (0) | 2021.11.17 |
[Dijkstra] 유명 알고리즘 대회 '전보' (Python) (0) | 2021.11.17 |