thumbnail

[lv.1] 덧칠하기 | 프로그래머스

[lv.1] 덧칠하기 | 프로그래머스

📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)

✏️ (lv.1) : 덧칠하기

길이 n미터인 벽이 있다. 벽의 페인트가 일부 벗겨져서 덧칠해야 하는데 최소한의 횟수로 벽을 칠하려고 한다. 롤러의 길이는 m미터이고 벽을 n개의 구역으로 나누어 덧칠해야 할 영역의 번호가 담긴 배열 section이 주어졌을 때 덧칠 횟수를 return하는 solution을 작성하라.


  • 롤러가 벽을 벗어나선 안되며 구역의 일부분만 포함되도록 칠해서도 안된다.
  • 1 ≤ mn ≤ 100,000
  • 1 ≤ section의 길이 ≤ n
    • section은 오름차순으로 정렬되어 있다.

덧칠해야 할 영역이 true, 그렇지 않은 영역이 false인 길이 n의 array를 선언한 후 해당 array를 순회하며 롤러의 길이 m만큼 덧칠을 진행한다.

  • array[i] === true일 경우 현재 index(=i)에 m-1만큼 더하고 count를 증가시킨다.
          
1 function solution(n, m, section) {
2 var answer = 0;
3 let wall = Array(n).fill().map((e, i) => {
4 if (section.includes(i+1)) {
5 return true
6 }
7 return false
8 })
9
10 for (let i=0; i<wall.length; i++) {
11 if (wall[i] === true) {
12 i += m-1;
13 answer++;
14 }
15 }
16
17 return answer;
18 }
# 프로그래머스
# JS
# javascript
# 코딩테스트
# 알고리즘

💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!

👨‍💻 관련 포스트