728x90
programmers - 실패율 |
https://school.programmers.co.kr/learn/courses/30/lessons/42889
자세한 문제 설명은 위의 링크를 참고하세요.
문제설명
문제를 요약하면, 총 스테이지 길이와 게임유저들의 현재 스테이지 상태배열을 입력받고 실패율을 구하는 것입니다.
실패율은 다음과 같이 정의합니다.
스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
사실 단순 구현 문제라서 어려운 내용은 없습니다.
바로 코드를 작성하겠습니다.
풀이코드
def solution(N, stages): m = 0 n = 0 dic = {} answer = [] # 1 ~ N 번째 stage의 실패율 계산 for i in range(N): m = 0 n = 0 # 스테이지에 도달했으나 클리어하지 못한 플레이어의 수 # 스테이지에 도달한 플레이어의 수 for stage in stages: if stage >= i+1: m += 1 if stage == i+1: n += 1 # 스테이지번호와 실패율 매칭 if m == 0: dic[i+1] = 0 else: dic[i+1] = n/m sorted_dict = sorted(dic.items(), key = lambda item:item[1], reverse = True) for stage_num in sorted_dict: answer.append(stage_num[0]) return answer |
알게된 점
dictionary 자료형에서 key,value를 기준으로 정렬하는 걸 잘 이용하면 편리하다는 걸 알게되었습니다.이번 문제에서 스테이지 번호와 실패율을 묶어서 정렬했어야했는데 c언어에서는 구조체를 통해 항상 해결했었습니다.파이썬에서는 사전 자료형을 통해 해결가능 !
728x90
'개인 공부 > 알고리즘 트레이닝' 카테고리의 다른 글
[python] programmers - 튜플 (1) | 2022.09.10 |
---|---|
[python] programmers - 성격 유형 검사하기 (0) | 2022.09.06 |
[python] programmers - 크레인 인형뽑기 게임 (0) | 2022.09.05 |
[python] programmers - 키패드 누르기 (0) | 2022.09.05 |
[python] programmers - 숫자 문자열과 영단어 (0) | 2022.09.05 |
댓글