잠 안 올 때 끄적끄적
[프로그래머스/파이썬/python3] Lv1. 실패율 본문
> 문제
> 코드
def solution(N, stages):
res = {k:0 for k in range(1,N+2)}
for i in set(stages):
res[i] = sum([st <= i for st in stages])/len(stages)
stages = [s for s in stages if s!=i]
res.pop(N+1)
ans = sorted(res.items(), key=lambda x: x[1], reverse=True)
return [i for i,j in ans]
흠냠냐
좋은코드는 아닌 것 같은게 시간이 대박 오래걸렸다. 7초 넘었는데.. for문 중첩 때문인가 싶다.
일단 고쳐야 할 부분이
1. 오류 없애려고, dict에 1〰️N+1까지 key를 넣었다. 그래야 나중에 pop할 때 키 없다고 에러 안뜨니까. 여기가 좀 더러운 것 같고
2. for문ㅠ set으로 줄여보려고 하긴 했는데 최악의 경우 시간복잡도가 O(n^2)이라 비효율적인 것 같다.
3. sorted에서, 다른 사람이 한 걸 봤는데
sorted(result, key=lambda x : result[x], reverse=True)
리턴을 그냥 이렇게 하셨더라고. 이렇게 하면 바로 key가 출력이 된다. value로 정렬하고 key만 뽑기... 깔끔해
다른 분은 이렇게 풀었는데 훨씬 짧게 걸린다고 한다. 시간복잡도 O(n)이다.
'코딩 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/파이썬/python3] Lv1. [1차] 다트 게임 (1) | 2023.02.02 |
---|---|
[프로그래머스/파이썬] Lv1. 기사단원의 무기 (0) | 2023.01.29 |
[프로그래머스/파이썬/python] Lv1. 명예의 전당 (1) (0) | 2023.01.29 |
[프로그래머스/파이썬/python3] Lv1. 문자열 나누기 (0) | 2023.01.29 |
[프로그래머스/파이썬/python3] Lv1. 가장 가까운 글자 (0) | 2023.01.29 |