JavaScripts 문제

문제 59. 덧칠하기(난이도 10)(new Array 와 fill)

kagan-draca 2024. 8. 19. 16:14

처음 문제를 보고

check라는 배열을 만들어

색이 있는 부분은 true,

색이 없는 부분은 false

로 만들어줬다.

 

그 후,

 

section의 요소 ~ 요소 + m까지 벽을 칠해나가도록

코드를 작성했다.

 

그런데, 위와 같이 코드를 작성할 경우

check[반복문 index] = true로

색이 없는 부분을 색을 칠해줄 경우

 

n(벽 개수)를 초과하는 범위의 check 배열이 만들어졌다....

 

(위의 문제를 해결할려다가 시간을 너무 오래 소모함...)

 

잘 생각해보니...

 

반복문을

for(let i = 0; i < check.length; i++)
{
     f(!check[i])
     {
        count++;
        i += m - 1
     }

}

0 ~ 벽의 개수로 설정하고

벽에 색이 없는 경우

i = i + m - 1로

i를 이동시킨 이후

그 다음 벽에 색이 없는 곳으로 이동시켜주면

문제를 간단하게 해결할 수 있었다...

 

제출한 코드 : 

 

function solution(n, m, section) {
    let check = new Array(n).fill(true)
    section.forEach((element)=>{
        check[element - 1] = false
    });
    let count = 0;
    for(let i = 0; i < check.length; i++)
    {
        if(!check[i])
        {
            count++;
            i += m - 1
        }
    }
    return count;
}