[프로그래머스 자바스크립트] ‘기능개발’ 풀어보기

2024. 7. 17. 19:22·Algorithm/Programmers(JavaScript)

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42586


1. 나의 풀이

처음에 문제를 읽을 때는 조금 막막했었다. 도대체 뭘 하라는거지?

  1. progressses 배열과 speeds 배열이 있다.
  2. 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수는 있는데
  3. 그러면 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 같이 배포된다.

그래서 나는 어떻게 했냐면,

  1. 100에서 progesses를 뺀 left_progresses 변수를 만들었다.
  2. left_progresses를 speeds로 나눈 값(이 때 올림을 해야한다(ceil 사용))을 새로운 배열에 push 한다.
  3. 값들이 들어간 배열(days)를 순회하는데 가장 앞에 있는 index의 값을 변수 standard에 저장하고, 뒤의 배열 값들이 standard보다 큰 값이 나올때까지 순회를 하면서 cnt 값을 1씩 더해준다.
  4. standard보다 큰 값이 나오면 순회를 멈추고, cnt 값을 새로운 배열(answer)에 push한다.
  5. standard보다 큰 값을 다시 변수 standard에 저장하고(cnt도 0으로 초기화), 3~4번을 반복한다.
  6. answer 배열을 return한다.

 

// 배열 days를 순회하면서
    // 현재 배열값(standard)보다 뒤에 있는 값들이 작거나 같으면 cnt를 더해준다.
    // 더 큰 값이 나오면 순회를 멈추고 카운트 된 cnt를 answer에 push해준다.
    // 그리고 answer 배열을 return한다.
    for(var i = 0; i < days.length;) {
        let cnt = 1;
        let standard = days[i];
        i++;
        while(standard >= days[i]) {
            cnt++;
            i++;
        }
        answer.push(cnt);
    }
    
    return answer;
    
    
}

 

다행히 정답이었다!!


2. 다른 사람의 풀이

function solution(progresses, speeds) {
    var answer = [];

    while(speeds.length > 0) {
        // 개발
        for(let i in speeds) {
            if(progresses[i] < 100) {
                progresses[i] += speeds[i];
            }
        }

        // 배포
        let deploy_count = 0;
        while(progresses[0] >= 100) {
            progresses.shift();
            speeds.shift();
            deploy_count++;
        }
        if(deploy_count > 0) {
            answer.push(deploy_count);
        }
    }

    return answer;
}

  1. progresses[i]가 100이 넘기 전까지 speeds[i]를 더 해준다.
  2. progresses[0]이 100 이상이 되면 progresses[0]과 speeds[0]을 빼주고(shift), deploy_count를 1 더해준다.
    • progresses[1]이었던 것이 progresses[0]이 되어 2번을 다시 반복한다.
  3. progresses[i]가 100이 넘었던 것들을 빼고 나면 deploy_count를 answer 배열에 push 한다.
  4. 1-3번 과정을 speeds 배열이 텅 빌 때까지 반복한다.

위 코드가 가독성이 더 좋은 것 같다. 개발과 배포가 언제 어떻게 이뤄지는지 알아보기 쉽다.

 

그리고 shift를 이번에 처음 알게 되었는데 → 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환

이것도 알아두면 유용히 써먹을 것 같다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers(JavaScript)' 카테고리의 다른 글

[프로그래머스 자바스크립트] ‘구명보트’ 풀어보기  (0) 2024.08.07
[프로그래머스 자바스크립트] ‘체육복’ 풀어보기  (0) 2024.08.07
[프로그래머스 자바스크립트] ‘같은 숫자는 싫어’ 풀어보기  (4) 2024.07.17
[프로그래머스 자바스크립트] '완주하지 못한 선수' 풀어보기  (0) 2024.07.17
[프로그래머스 자바스크립트] '폰켓몬' 풀어보기  (2) 2024.07.16
'Algorithm/Programmers(JavaScript)' 카테고리의 다른 글
  • [프로그래머스 자바스크립트] ‘구명보트’ 풀어보기
  • [프로그래머스 자바스크립트] ‘체육복’ 풀어보기
  • [프로그래머스 자바스크립트] ‘같은 숫자는 싫어’ 풀어보기
  • [프로그래머스 자바스크립트] '완주하지 못한 선수' 풀어보기
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (178)
      • Frontend (31)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (10)
        • crohasang_page (3)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    next.js
    KUIT
    오블완
    프론트엔드
    javascript
    자바스크립트
    프로그래머스 자바스크립트
    타입스크립트
    인공지능
    티스토리챌린지
    fedify
    HTML
    알고리즘
    리액트
    시스템프로그래밍
    프로그래머스
    음악추천
    typescript
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[프로그래머스 자바스크립트] ‘기능개발’ 풀어보기
상단으로

티스토리툴바