-
[🤷♀️ 프로그래머스 Python] 실패율 (from kakao)Algorithm/1일 1코테 2020. 10. 17. 18:15반응형
문제
programmers.co.kr/learn/courses/30/lessons/42889
내 풀이
1차 시도
def remove_list(i, stages): # 해당 값 제거해주는 함수 return [n for n in stages if n != i] def solution(N, stages): dic = dict() # 실패율 저장할 dict for i in range(1, N+1): fail_rate = stages.count(i)/len(stages) #실패율 계산 dic[i] = fail_rate #dic에 넣어줌 stages = remove_list(i, stages) #stages에서 i값을 제거 (다음 stages 길이를 구해주기 위해) dic = dict(sorted(dic.items(), reverse=True, key=lambda x: x[1])) # 실패율로 나열 answer = list(dic.keys()) #key값만 뽑아서 리스트로 return answer
정답률 70점, 런타임에러로 장렬하게 탈락!!
조금의 수정 시도
2차 시도
def remove_list(i, stages): return [n for n in stages if n != i] def solution(N, stages): answer = [] for i in range(1, N+1): fail_rate = stages.count(i)/len(stages) answer.append((i, fail_rate)) stages = remove_list(i, stages) answer = sorted(answer, key=lambda x: x[1], reverse = True) answer = list(answer[n][0] for n in range(len(answer))) return answer
또 런타임 에러로 탈락!!
이외에도 갖가지 방법을 시도해 보았으나 모두 런타임에러로 실패...^-ㅜ
다른사람 풀이
def solution(N, stages): result = {} denominator = len(stages) for stage in range(1, N+1): if denominator != 0: count = stages.count(stage) result[stage] = count / denominator denominator -= count else: result[stage] = 0 return sorted(result, key=lambda x : result[x], reverse=True)
추천수 1등 답안...
굳이 append, 삭제할 필요 없이 count를 따로 계산해서 빼주면 = stages의 길이가 도출 된다!!
그냥 천재쓰~
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스 Python] 예산 (Summer/Winter Coding 2018) (0) 2020.10.17 [💕 프로그래머스 Python] 크레인 인형뽑기 게임 (from kakao) (0) 2020.10.17 [프로그래머스 Python] 캐시 (from kakao) (0) 2020.10.16 [프로그래머스 Python] 다트게임 (from kakao) (0) 2020.10.14 [프로그래머스 Python] 비밀지도(from kakao) (0) 2020.10.13