기능개발

hyuri·2023년 11월 29일
0

코딩테스트 연습

목록 보기
68/70

내가 작성한 답

function solution(progresses, speeds) {
    const answer = [];
    const total = 100;
    const rest = progresses.map(value => total - value);
    const result = [];
    for (let i = 0; i < rest.length; i++) {
        const day = Math.ceil(rest[i] / speeds[i]);
        result.push(day);
    }
    let maxDay = result[0];
    let count = 1;
    for (let i = 1; i < result.length; i++) {
        if (result[i] <= maxDay) {
            count++;
        } else {
            answer.push(count);
            count = 1;
            maxDay = result[i];
        }
    }
    answer.push(count);
    return answer;
}

다른 답

function solution(progresses, speeds) {
    let answer = [0];
    let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
    let maxDay = days[0];

    for(let i = 0, j = 0; i< days.length; i++){
        if(days[i] <= maxDay) {
            answer[j] += 1;
        } else {
            maxDay = days[i];
            answer[++j] = 1;
        }
    }

    return answer;
}

해석

  • 내가 작성한 답
  1. 완료 일수를 별도의 배열 result을 사용하여 계산했음.
  2. 매일 공개될 작업 수를 결정하기 위해 두 번의 루프를 사용.
  3. 작업 진행 상황을 추적하기 위해 추가 변수 maxDay와 count를 사용.
  • 다른 답
  1. 직접적으로 완료 일수를 계산하기 위해 map 함수를 사용.
  2. answer 배열을 채우기 위해 단일 루프를 사용.
  3. 진행 상황을 추적하기 위해 단일 인덱스 j를 사용.
  • 정리
    단일 루프와 추가 변수를 덜 사용하여 같은 결과를 얻음.
    줄일 수 있는 것은 줄이는게 좋음.
profile
개발자가 되고 싶은 지망생

0개의 댓글