본문 바로가기
코딩 테스트/프로그래머스

실패율

by ornni 2024. 8. 26.
728x90
반응형

첫번째 코드

 

리스트 안에 두 개의 값([깨지는 못했지만 스테이지에 도달한 사람, 스테이지 번호])을 갖고 있는 리스트를 만든다.

그리고 stages 리스트를 이용하여 위의 리스트를 완성한다.

 

거꾸로 스테이지 도달한 플레이어 수를 더해가며 깨지는 못했지만 스테이지에 도달한 사람을 나누어준다. (실패율 구하기)

 

스테이지0과 모든걸 클리어한 사람을 빼준 후

실패율이 높은 사람 순서대로 배열 하면서, 스테이지가 낮은 순으로 배열한다. (GPT sort 함수를 도와줘!)

 

answer이라는 리스트를 생성하여, 스테이지를 리스트에 넣고 출력한다.

 

def solution(N, stages):
    answer = []
    count = [[0, i] for i in range(0, N+2)]
    
    for i in stages:
        count[i][0] += 1
    
    Sum = count[N+1][0]
    
    for i in range(N, -1, -1):
        Sum += count[i][0]
        count[i][0] = count[i][0] / Sum
    
    del count[0]
    del count[-1]
    
    count = sorted(count, key = lambda x:(-x[0], x[1]))
    
    for i in count:
        answer.append(i[1])
        
    return answer

 

오류?

엥? 런타임에러...?


두번째 코드

 

모두 클리어 한 사람이 없는 경우 0이 되어 나누는 데에 문제가 발생한다.

하여 해당 값을 바꿔주어야 한다.

하지만 1, 2와 같은 상수로 나누면 결과값에 문제가 생길 수 있으니, 0과 가까운 0.00000000000001값으로 대체한다.

 

def solution(N, stages):
    answer = []
    count = [[0, i] for i in range(0, N+2)]
    
    for i in stages:
        count[i][0] += 1
    
    if count[N+1][0] != 0:
        Sum = count[N+1][0]
    else:
        Sum = 0.00000000000001
    
    for i in range(N, -1, -1):
        Sum += count[i][0]
        count[i][0] = count[i][0] / Sum
    
    del count[0]
    del count[-1]
    
    count = sorted(count, key = lambda x:(-x[0], x[1]))
    
    for i in count:
        answer.append(i[1])
        
    return answer

 

통과!


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/42889.%E2%80%85%EC%8B%A4%ED%8C%A8%EC%9C%A8

 

programmers/프로그래머스/1/42889. 실패율 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

[1차] 비밀지도  (0) 2024.09.02
예산  (0) 2024.08.30
[1차] 다트 게임  (0) 2024.08.23
숫자 문자열과 영단어  (0) 2024.08.19
옹알이 (2)  (0) 2024.08.16