KEEP GOING
[python] 프로그래머스 42889번 : 실패율 (정렬, ZeroDivisionError) 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/42889
1. 테스트케이스에서 실패한 코드 (정확성 33.3)
def solution(N, stages):
answer = []
stages.sort()
for i in range(1,N+1):
count = 0
numOfPlayers = 0
while stages:
numOfPlayers = max(numOfPlayers, len(stages))
if i == stages[0]:
# numOfPlayers = max(numOfPlayers, len(stages))
stages.pop(0)
count += 1
else:
# numOfPlayers = max(numOfPlayers, len(stages))
break
# print('num',numOfPlayers)
if numOfPlayers == 0:
continue
answer.append((round(count/numOfPlayers,4), i))
answer.sort(key = lambda x:(-x[0],x[1]))
# print(answer)
result = []
for data in answer:
result.append(data[1])
return result
2. 코드 개선 ( 정확성 44.4)
def solution(N, stages):
stages.sort()
# print(stages)
failLst = []
# 1부터 n까지의 스테이지에 대한 실패율 구하기
for i in range(1, N+1):
count = 0
for stage in stages:
if stage == i:
count += 1
failure = round(count/len(stages), 5) if len(stages) != 0 else 0
# print(failure)
failLst.append((failure, i))
stages = stages[count:]
# print(result)
failLst.sort(key=lambda x:-x[0])
result = []
for data in failLst:
result.append(data[1])
return result
11번 코드에 if len(stages) != 0 else 0 을 추가하여
분모가 0이되어 zeroDivisionError가 발생하는 경우를 제거하였고 정확성이 15점 정도 올라갔다.
3. 성공한 코드
def solution(N, stages):
stages.sort()
# print(stages)
failLst = []
# 1부터 n까지의 스테이지에 대한 실패율 구하기
for i in range(1, N+1):
# i의 개수 카운트
count = stages.count(i)
# 분모가 0일 때(ZeroDivisionError) 처리
failure = count/len(stages) if len(stages) != 0 else 0
failLst.append((failure, i))
stages = stages[count:]
failLst.sort(key=lambda x:-x[0])
failLst = [x[1] for x in failLst]
return failLst
stages 리스트에서 1~N 까지의 개수를 구할때 리스트의 내장함수인 count 변수를 이용하여 코드를 개선하였다.
또한 result 리스트를 새로 생성하지 않고 다시 failLst에 담는 방식으로 메모리를 줄여주었다.
반응형
'code review > sort' 카테고리의 다른 글
[python] 프로그래머스 42626번 : 더 맵게 (heapq.heapify) (0) | 2022.04.04 |
---|---|
[python] 백준 1202번 : 보석 도둑 (정렬, heapq) (3) | 2022.03.02 |
[python] 이것이코딩테스트다 : 커리큘럼 (위상정렬) (0) | 2022.01.10 |
[python] 프로그래머스 42579번 : 베스트 앨범 (0) | 2021.12.29 |
[python] 딕셔너리 정렬하기 (key/value 기준으로 sorted(), lambda, reverse 사용) (2) | 2021.12.28 |
Comments