본문 바로가기
코딩테스트/LV. 2

LV.2 :: 기능개발

by KUROMI98 2024. 10. 21.

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

 

프로그래머스

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

programmers.co.kr

function solution(progresses, speeds) {
    let workingDays = 0; // 일하는데 걸리는 날의 수
    let workFinishTime = []; // 일하는데 걸리는 날의 수의 집합
    
    for (let i=0; i<speeds.length; i++){
        workingDays = Math.ceil((100-progresses[i])/speeds[i]);
        workFinishTime.push(workingDays)
    }
    
    // 일하는 데 걸리는 날의 수를 센다.
    // workFinishTime = [ 5, 10, 1, 1, 20, 1 ]
    
    let releaseDate = []
    for (let day = 0; day<workFinishTime.length; day++){
        if (workFinishTime[day] >= workFinishTime[day+1]) {
            if (day !== workFinishTime.length - 1){
                workFinishTime[day + 1] = workFinishTime[day]
            }
        }
    }
    
    // 배포하는 데 걸리는 날의 수로 바꿔본다.
    // workingFinishTime = [ 5, 10, 10, 10, 20, 20 ]
    
    let count = 1;
    let answer = [];

    for (j=0; j<workFinishTime.length; j++){
        if (workFinishTime[j] == workFinishTime[j+1]){
            count ++
        } else if (workFinishTime[j] != workFinishTime[j+1]){
            answer.push(count)
            count = 1;
        }
    }
    
    // 카운트 1로 시작해서, 다음 원소가 같다면 count ++ 하고, 
    // 다음 원소가 다르다면 answer에 그간의 count를 push 하고 count를 초기화한다.
    
    return answer;
}

 

'코딩테스트 > LV. 2' 카테고리의 다른 글

LV.2 :: 주식 가격  (0) 2024.10.21
LV.2 :: n^2 배열 자르기  (0) 2024.10.21
LV.2 :: 예상 대진표  (0) 2024.10.21
LV.2 :: 멀리 뛰기  (0) 2024.10.21
LV.2 :: 영어 끝말잇기  (0) 2024.10.21

댓글