programmers.co.kr/learn/courses/30/lessons/42889
이번문제는 2019 카카오 블라인드 채용 문제중 하나였던 실패율 이다.
이번에 카카오 코테봤는데...이정도 난이도면 나도 붙었을 수 있을 것 같다...라고 자만해본다.
이게 가장 쉬운문제였겠지 아마?..ㅠ
하여튼!
level1이라서 어렵지 않게 풀었다.
이제 이정도는 어떤 흐름으로 답을 구해야할지는 감이 온다. 다만 효율성면이나 메소드, 표현식 등은 더 공부해야하겠지만....갈길이 멀구나 ㅠㅠ
[알고리즘 Flow]
1. 사용자의 수 만큼 반복문 사용, 그리고 그 수 만큼 2중 반복문 사용
2. 현재 스테이지와 배열의 해당 사용자의 스테이지가 같다면, 실패횟수를 ++해준다.
3. 실패횟수가 모두 더해지면 현재 유저수를 실패횟수로 나눈 값을 실패율로 저장해준다.
4. 그리고 현재 유저수를 실패횟수 만큼 빼준다.
5. 위의 작업을 유저수만큼 반복 후 answer 배열에 담아 출력한다.
[나의 코드]
function solution(N, stages) {
var answer = [];
let res = [];
let fail;
// 실패 횟수
let rank;
// 실패 율
let user = stages.length;
// 유저의 수
for (let i = 0; i < N; i++) {
let row = new Object();
// 로우 데이터 객체
let now = i+1;
// 현재 스테이지
fail = 0;
rank = 0;
// 실패수와 실패율 초기화
for (let j = 0; j < stages.length; j++) {
if (now == stages[j]) {
// 현재 스테이지와 도전중인 스테이지가 같다면
fail++;
// 실패 횟수 ++
}
}
row.stage = now;
rank = fail / user;
// 현재 유저의 수를 실패의 수로 나눈다
if (rank > 1) {
rank = 1;
}
// 만약 실패율이 100%넘어가면 그냥 100%로 해준다.
row.fail = rank;
res.push(row);
user -= fail;
// 실패한 수만큼 유저수에서 뺀다. 아직 다음 스테이지에 못갔으니
}
res.sort(function(a, b) {
return b.fail - a.fail;
// 실패율을 내림차순으로 정렬한다.
})
for (var i = 0; i < res.length; i++) {
answer[i] = res[i].stage;
// answer에 하나 넣어준다.
}
return answer;
}
끝!
[깃허브]
https://github.com/RUCKUSJERRY/practiceOfJava/blob/main/Prs_Pratice/src/com/level01/failrank.js
'문제풀이 > 프로그래머스' 카테고리의 다른 글
폰켓몬 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.06.08 |
---|---|
키패드 누르기 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.06.07 |
큰 수 만들기 / 프로그래머스 연습문제 / programmers / level2 / Javascript / 탐욕 (0) | 2021.05.14 |
더 맵게 / 프로그래머스 연습문제 / programmers / level2 / java / 힙 (0) | 2021.05.13 |
소수 찾기 / 프로그래머스 코딩테스트 / programmers / level2 / 완전탐색 / Java (0) | 2021.05.12 |