N

(프로그래머스 JS)덧칠하기 본문

프로그래머스 알고리즘/2단계

(프로그래머스 JS)덧칠하기

naeunchan 2023. 3. 14. 22:28
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/161989

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제를 단순하게 접근하면 된다.

section에 있는 범위만 덧칠하면 되기 때문에 greedy하게 접근한다.

 

우선 start 변수를 선언하여 section의 마지막 원소를 가져온다.

한번 덧칠하는 단계이기 때문에 answer = 1이며, 이 start에서 m 만큼 이동한다.

 

while문으로 section을 비울 때까지 반복

현재 위치를 section.pop()을 이용해 가져오며,

만약 current가 start보다 크다면 이미 덧칠한 부분이기 때문에 continue로 넘어간다.

 

그렇지 않다면 덧칠을 current에서 시작해야 하며, 이 위치에서 m 만큼을 덧칠한다.

그리고 answer++을 하여 카운팅.

 

답을 리턴하면 된다.

function solution(n, m, section) {
    let answer = 1;
    let start = section.pop();
    
    start -= m;
    
    while(section.length) {
        const current = section.pop();
        
        if(current > start) {
            continue;
        }
        
        start = current - m;
        answer++;
    }
    
    return answer;
}
728x90
반응형