728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 각 스테이지 별로 실패하는 사람의 수를 세어 현재 스테이지 별 남은 사람의 수를 나눠주면 실패율을 구할 수 있다. 구한 실패율을 각각 저장하고 실패율을 기준으로 내림차순으로 정렬하여 해당 스테이지 번호를 출력하면 된다.
- 처음 사용자의 수를 저장한다. size = len(stages)
- 각 스테이지별로 실패율을 저장할 딕셔너리를 생성한다. d = {}
- 각 스테이지 번호를 하나씩 지정하여 for i in range(1, N + 1)
- 만약 해당 스테이지를 실패하는 사람이 없다면 if (stages.count(i) == 0)
- 해당 스테이지의 실패율을 0으로 저장한다. d[i] = 0
- 그리고 다음 스테이지로 넘어간다. continue
- 해당 스테이지를 실패하는 사람이 있다면 해당 스테이지의 실패율은 실패하는 사람의 수를 전체 사람의 수로 나눈 값이고 구한 실패율을 저장한다. d[i] = stages.count(i) / size
- 실패하는 사람이 생겼으므로 다음 스테이지에는 실패한 사람을 제외한 나머지 사람이 갈 수 있게 된다. 따라서 다음 스테이지에 가는 전체 사람의 수를 변경해 준다. size -= stages.count(i)
- 모든 스테이지별 실패율을 구했다면 실패율을 기준으로 내림차순 정렬한다. d = sorted(d.items(), key=lambda x: x[1], reverse=True)
- 내림차순 정렬한 결과를 하나씩 추출하여 for i in d
- 해당 스테이지 번호를 정답 리스트에 추가한다. answer.append(i[0])
반응형
3. 소스코드
def solution(N, stages):
answer = []
size = len(stages)
d = {}
for i in range(1, N + 1):
if (stages.count(i) == 0):
d[i] = 0
continue
d[i] = stages.count(i) / size
size -= stages.count(i)
d = sorted(d.items(), key=lambda x: x[1], reverse=True)
for i in d:
answer.append(i[0])
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] k진수에서 소수 개수 구하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.05 |
---|---|
[프로그래머스] 최고의 집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.04 |
[프로그래머스] 전화번호 목록 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.03 |
[프로그래머스] 덧칠하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.02 |
[프로그래머스] 타겟 넘버 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.31 |
[프로그래머스] 이중우선순위큐 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.30 |
[프로그래머스] 정수 삼각형 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.29 |
[프로그래머스] 피로도 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.28 |