티스토리 뷰
반응형
🚀 카카오 실패율 풀이
🌠 내 풀이(틀린것)
def solution(N, stages):
answer = []
player = [0] * (max(stages)+1)
length = len(stages)
for i in stages:
player[i] += 1
j=0
for i in player:
j +=1
if length == 0:
fail = 0
else:
fail = i / length
answer.append((j,fail))
length -= i
answer = sorted(answer, key=lambda t: t[1], reverse=True)
answer = [i[0] for i in answer]
return answer
n = 5
stages = [2, 1, 2, 6, 2, 4, 3, 3]
solution(n,stages)
🌠 정확한 풀이
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
n = 5
stages = [2, 1, 2, 6, 2, 4, 3, 3]
solution(n,stages)
🌠 개선
계수 정렬로 접근하여 계산하는 시도는 좋았지만 시간 복잡도가 O(2*N) 이며 실패율 계산은 정확했지만 출력을 위한answer.append()에 문제가 있었다.
특히나 반복문은 player배열 요소를 하나씩 출력하기보다 1 ~ N+1 으로 반복하여 계산하는 것이 좋았다.
계수 정렬 코드의 개선점으로 파이썬 에서는 arr.count(요소) 메소드가 있다.
반복문 내부에 계수정렬 메소드를 한번에 넣는 다면 충분히 O(N) 복잡도를 구현할 수 있다.
🌠 손 코딩

반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| 2020 카카오 문자열 압축 (0) | 2021.04.20 |
|---|---|
| 2018 카카오 캐시 (0) | 2021.04.20 |
| 2018 카카오 비밀지도 (0) | 2021.04.20 |
| 2019 카카오 후보키 (0) | 2021.04.20 |
| 2021 카카오 광고 삽입 (0) | 2021.04.20 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Algorithm
- java
- 스프링부트
- springboot
- 자격증
- 백준
- nginx
- CS
- 릿코드
- ajax
- JPA
- C언어
- 그래프
- 디자인패턴
- OOP
- 면접
- interview
- Spring
- 자바
- Solid
- 매트랩
- 알고리즘
- 수학
- security
- docker
- kakao
- 스프링
- 프로그래머스
- spring-cloud
- Matlab
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함