[JS] Programmers 161989 덧칠하기

서연주·2023년 7월 12일
0

Algorithm

목록 보기
21/25

썸네일_제목은 PRGM 161989 덧칠하기, 부제목은 JavaScript, 분류는 Algorithm

'덧칠하기'

Programmers '덧칠하기' 문제 보러가기

풀이 코드

section 배열의 앞에서부터 한 번 롤러로 칠할 수 있는 범위 내에 있는 원소 값을 빼며 결과를 더했다.

function solution(n, m, section) {
    var answer = 0;
    let cur=0;
    while(section.length !== 0){
        let cur = section[0];
        
        for(let i=0;i<section.length;i++){
            if(section[i] <= cur+m-1){
                section.shift();
                i--; // section의 첫번째 원소가 빠지면서 그 다음 원소가 첫 번째 원소가 되므로 i를 되돌려주어야 한다.
            }
            else break;
            
        }
        answer++;
    }
    return answer;
}

📌 shift() - arr.shift()
; 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환한다.

  • 배열에서 제거한 요소를 반환한다.
    *빈 배열의 경우에는 undefined를 반환한다.
  • 배열의 길이를 변하게 한다.

개선하기

*ENZYMATIC 님의 코드를 참고하였습니다.
1. 이중 반복문 대신 포인터를 옮겨 단일 반복문으로

function solution(n, m, section) {
    var answer = 0;
    let cur=0;
    for(let i=0;i<section.length;i++){
        if(cur < section[i]){
            answer++;
            cur = section[i]+m-1;
        }
    }
    return answer;
}

참고 자료

profile
pizz@ttang

0개의 댓글