[프로그래머스] lv.2 기능개발

Jenny·2023년 4월 6일
0

ProblemSolving

목록 보기
5/14
post-thumbnail

문제

기능개발

해결

function solution(progresses, speeds) {
    var answer = [0];
    // 인덱스의 day를 구한다.
    let days = [];
    
    for ( let i in progresses) {
        // 반올림 말고 올림처리
            let day = Math.ceil((100 - progresses[i]) / speeds[i]);
            days.push(day);
        }
    let max = days[0]; // 첫번째 값으로 초기화 , 이후 비교하며 교체
    
    console.log(days);
    
    // days 배열 순회 
    for (let i = 0, j=0; i<days.length; i++) {
        // max보다 작으면 count 증가 
        if (days[i] <= max) {
            answer[j] +=1;
        } else {
            // 최댓값 교체 후
            max = days[i];
            // index 증가 >
            answer[++j] =1;
        }
    }
    
    return answer;
}

생각

  • 문제를 이렇게 정리해보니 최대값을 만나기 전까지의 개수가 결과값이라는 것을 알았다.
  • 처음엔 최대값 만나기 전까지 cnt를 ++ 해준다.
  • 그리고 이것처럼 배열안에서 최대/최소값을 갱신해야할 때, 초기화 하는 걸 까먹지 말아야겠다.
 let max = days[0]; // 첫번째 값으로 초기화 , 이후 비교하며 교체
  • days[i] 랑 days[i+1]만 비교하면 안된다. days가 [5,10,1,1,20,1] 일 경우 원하는 값을 구할 수 없다. 첨에 이렇게 생각했다.. 단순 ㅎ

알게된 점

  • for문에서 변수 두 개를 동시에 선언해서 탐색할 수 있다. 변수도 하나 줄일 수 있다.
  • Math.ceil() : 올림
  • Math.round() : 반올림
profile
Developer로의 여정

0개의 댓글