aotoyae

[JS] 프로그래머스 : 덧칠하기 161989 본문

Coding Test

[JS] 프로그래머스 : 덧칠하기 161989

aotoyae 2024. 2. 16. 10:41

 

 

📝 문제

어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다···

 

n m section result
8 4 [2, 3, 6] 2
5 4 [1, 3] 1
4 1 [1, 2, 3, 4] 4

 

🫠 나의 풀이

function solution(n, m, section) {
  let arr = new Array(n).fill(0);
  let answer = 0;

  for (let i of section) arr[i] = 1;

  for (let j = 0; j < arr.length; j++) {
    if (arr[j] === 1) {
      for (let k = j; k < j + m; k++) {
        arr[k] = 0;
      }
      answer++;
    }
  }

  return answer;
}

 

🧞‍♂️ 다른 사람의 풀이

function solution(n, m, sections) {
    var answer = 0;
    var painted = 0;
    for(var section of sections) {
        if(painted < section) {
            answer++;
            painted = section+m-1;
        }
    }
    return answer;
}

 

그림을 그리면서 했더니 배열을 만들어서 벽을 칠하는 느낌(0으로 칠해준다!)으로 접근했는데,

마지막 칠한 부분을 체크하는 방법이 있었다.

 

 

 

🔗 https://school.programmers.co.kr/learn/courses/30/lessons/161989?language=javascript

 

프로그래머스

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

programmers.co.kr