프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
def solution(N, stages):
answer = []
#N번 스테이지의 실패율이 몇인지 관리해주기 위해서 딕셔너리 사용
dic={}
#전체 인원을 구해준다.
people=len(stages)
for i in range(1,N+1):
#1번 스테이지인 경우 이전 스테이지에서 뺄 인원이 없으므로 다음과 같이 처리해준다.
if i==1:
target=stages.count(i)
dic[i]=stages.count(i)/people
people-=target
#1번을 제외한 나머지 스테이지의 경우 이전 스테이지 인원들을 빼줘야 함
else:
#전체 인원에서 이전 스테이지 인원을 모두 빼서 남은 인원이 0명이라면 해당 스테이지의 실패율은 0
if people!=0:
target=stages.count(i)
dic[i]=stages.count(i)/people
people-=target
else:
dic[i]=0
#이미 1~N번 스테이지 순서대로 나열되어 있으므로 실패율을 기준으로 내림차순 정렬
sorted_dic=sorted(dic.items(), key=lambda x:(-x[1]))
for stage,_ in sorted_dic:
answer.append(stage)
return answer
정리
people가 0일 때, dic[i]=0 으로 처리 <- 생각하기까지 오랜 시간이 걸렸다.
종이에 직접 테스트 케이스를 써가면서 수가 어떻게 변하는지 확인하면 더 쉽게 생각할 수 있을 것 같다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2023 KAKAO BLIND RECRUITMENT - 이모티콘 할인행사 (0) | 2024.06.10 |
---|---|
[프로그래머스] 2023 KAKAO BLIND RECRUITMENT - 택배 배달과 수거하기 (0) | 2024.06.10 |
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 (0) | 2024.06.04 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도 (0) | 2024.06.03 |
[프로그래머스] 2024 KAKAO WINTER INTERNSHIP - 가장 많이 받은 선물 (0) | 2024.04.03 |