코딩 테스트 연습일지 Day-1

이민영·2021년 9월 15일

2021.09.14 알고리즘 테스트 연습
프로그래머스 > 스택/큐 > 기능개발

내가만든 코드 JavaScript ver.

function solution(progresses, speeds) {
    let arr = [];
    let answer = [];
    let count = 1;
    let i = 1;
    
    progresses.forEach((item,idx) => {
        let days = Math.ceil( (100 - item) / speeds[idx]);
        arr.push(days);
    });
    while(arr.length > 0){
        if( arr[0] >= arr[i] ){
            count++;
            i++;
        }
        else if (arr.length === 1){
            answer.push(1);
            break;
        }
        else{
            answer.push(count);
            arr.splice(0,count);
            count = 1;
            i = 1;
        }
    }
    return answer;
}

<풀이 로직>

  1. progresses에서 받은 배열을 forEach를 통해서 요소 당 몇일이 걸리는지 계산하여 새로운 배열 arr에 넣어주도록 한다.
  2. days 가 들어있는 arr 배열에서 첫번째 요소가 다음 요소보다 작은지 큰지 while문을 통해서 확인한다.
    1) 작은경우 (=첫번째 요소(=arr[0])가 큰 경우)
    count에 숫자 1을 더하고 인덱스를 뜻하는 i에도 1을 더한다.
    2) 큰 경우 (=첫번째 요소(=arr[0]가 작은경우)
    count를 배열 answer에 넣고 arr배열에 count숫자만큼의 요소를 삭제
    3) arr배열에 요소가 1개가 남은 경우
    answer 배열에 1을 넣고 while문 끝내기

profile
프론트엔드 개발자를 꿈꾸고 있습니다 !

0개의 댓글