첫번째 코드
리스트 안에 두 개의 값([깨지는 못했지만 스테이지에 도달한 사람, 스테이지 번호])을 갖고 있는 리스트를 만든다.
그리고 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
통과!
링크
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 |