[Python/Javascript] 프로그래머스 : 2019 KAKAO BLIND RECRUITMENT 실패율

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

 

프로그래머스

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

programmers.co.kr

Python Answer

def solution(N, stages):
    challenge = {} # 스테이지에 도달한 플레이어 수
    success = {} # 성공한 사람 수 기재해주자
    percent = [] # 실패율 기록하기
    for i in range(1,N+2):
        challenge[i] = 0
    print(challenge)
    for stage in stages:
        for i in range(1, stage + 1):
            challenge[i] += 1
    for idx in range(1, len(challenge)):
        success[idx] = challenge[idx] - challenge[idx+1]
    for idx in range(1, N + 1):
        if challenge[idx] == 0:
            percent.append((0, idx))
        else:
            percent.append((int(success[idx]) / int(challenge[idx]), idx))
    percent.sort(key=lambda x: -x[0])  # 내림차순, 오름차순 정렬
    answer = []
    for p in percent:
        answer.append(p[1])
    return answer

Javascript Answer

function solution(N, stages) {
    var answer = [];
    var challenge = {}; // 도전했지만 실패한 단계 기록
    var clear = {}; // 성공한 단계 기록
    var clearPercent = [];
    
    // 각 스테이지에 대한 도전 횟수 초기화
    for (var idx = 1; idx <= N + 1; idx++) {
        challenge[idx] = 0;
    }    
    // 플레이어가 도전한 스테이지에 대해 처리
    for (var i = 0; i < stages.length; i++) {
        var stage = stages[i];
        for (var idx = 1; idx <= stage; idx++) {
            challenge[idx] += 1;
        }
    }
    
    // 각 스테이지에 대한 클리어 플레이어 수 계산
    for (var idx = 1; idx <= N; idx++) {
        clear[idx] = challenge[idx] - challenge[idx + 1];
    }
    
    for (var idx = 1; idx <= N; idx++) {
        if (clear[idx] === 0) {
            answer.push([0, idx]);
        } else {
            answer.push([clear[idx] / challenge[idx], idx]);
        }
    }
    
    answer.sort((a, b) => {
        // 첫번째 요소를 내림차순으로 정렬
        if (b[0] - a[0] !== 0) {
            return b[0] - a[0];
        }
        // 첫번째 요소가 같은 경우 두번째 요소를 오름차순으로 정렬
        return a[1] - b[1];
    });

    for (i = 0; i < N; i++) {
        clearPercent.push(answer[i][1])
    }
    return clearPercent;
}

 

javascript로 알고리즘 풀이가 익숙하지 않아 풀이에 시간이 좀 걸렸다,,,

TAGS.

Comments