본문 바로가기
개인 공부/알고리즘 트레이닝

[python] programmers - 실패율

by 아메리카노와떡볶이 2022. 9. 6.
728x90
programmers - 실패율

https://school.programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

자세한 문제 설명은 위의 링크를 참고하세요.

 

문제설명

문제를 요약하면, 총 스테이지 길이와 게임유저들의 현재 스테이지 상태배열을 입력받고 실패율을 구하는 것입니다.

 

실패율은 다음과 같이 정의합니다.

스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

 

사실 단순 구현 문제라서 어려운 내용은 없습니다.

바로 코드를 작성하겠습니다.

 

풀이코드

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

댓글