프로그래머스
[프로그래머스] 덧칠하기
so_yeon_-
2024. 12. 3. 18:10
https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
접근방법
- 처음 문제를 풀었을때는 단순히 section의 [0]번째 값과 [section.length -1]번째 값을 뺀후 롤러의 길이만큼 나눈값에 나머지를 올림계산하면 답이 나올거라고 생각하고 접근했다.
1차 제출
function solution(n, m, section) {
return Math.ceil((section[section.length - 1] - (section[0] - 1)) / m);
}
결과 : 54점
분석 : 문제의 핵심 조건인 최소 횟수를 만족하지 못하였다. 빈 공간 뿐만 아니라 모든 페인트 구간을 무조건 추가하는 로직이었기 때문이다.
2차 제출
function solution(n, m, section) {
var answer = 0;
var start = section[0];
for(sectionObj of section){
if(sectionObj >= start + m){
answer ++;
start = sectionObj;
}
}
return answer + 1;
}
결과 : 100점
분석 : 처음 빈 공간인 위치를 start 변수에 담고 있다가, 이 공간을 벗어나면 새롭게 카운트를 증가시키도록 수정하였다.
반복이 끝나면 마지막 페인트 작업은 추가로 필요하므로 최종 카운트에서 +1을 추가했다.