[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로 알고리즘 풀이가 익숙하지 않아 풀이에 시간이 좀 걸렸다,,,
'알고리즘 > programmers' 카테고리의 다른 글
| [Python/Javascript] 프로그래머스 2020 카카오 인턴십 : 키패드 누르기 (0) | 2024.01.09 |
|---|---|
| [Python/Javascript] 프로그래머스 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기 (1) | 2024.01.09 |
| [Python/javascript] 프로그래머스 : 체육복 (0) | 2024.01.04 |
| [Javascript] 프로그래머스 : [1차] 비밀지도 (0) | 2023.12.28 |
| [Javascript] 프로그래머스 : 숫자 문자열과 영단어 (0) | 2023.12.28 |
TAGS.
