Problem
Solution
덧필하기는, 정수 n, m과 다시 페인트를 칠하기로 정한 구역들의 번호가 담긴 정수 배열 section 이 매개변수로 주어질 때 롤러로 페인트칠해야 하는 최소 횟수를 리턴해주는 문제이다.
이번 문제는 비교적 간단한 문제였다.
1. 처음 section이 시작되는 위치부터 +m을 한 값까지를 칠해야 하므로 answer = 1로 시작하면서 tempSection은 section [0]을 넣고 시작한다.
2. section의 범위를 반복하면서 tempSection에 범위 m과 -1을 한 값이 section이 넘어가면 페인트를 다시 시작해야하므로, answer++을 해주면서 tempSection을 section으로 다시 초기화해준다.
3. 이렇게 for문을 마무리한 answer값을 출력해 주면 된다.
class Solution {
public int solution(int n, int m, int[] section) {
int answer = 1;
int tempSection = section[0];
for (int i = 0; i < section.length; i++) {
if (tempSection + m - 1 < section[i]) {
answer++;
tempSection = section[i];
}
}
return answer;
}
}
마치며
이번 문제는 간단하게 설계를 잘하면 풀 수 있는 문제였다. 혹시 다른 풀이나 더 좋은 방법이 있으면 댓글 남겨주시면 감사하겠습니다 :)
반응형
'백준 Algorithm' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 (0) | 2023.04.07 |
---|---|
[프로그래머스] 이진 변환 반복하기 Java 풀이 (0) | 2023.04.06 |
[프로그래머스] 다음 큰 숫자 Java 풀이 (0) | 2023.04.05 |
[프로그래머스] 문자열 나누기 Java 풀이 (0) | 2023.03.15 |
[프로그래머스] 대충 만든 자판 Java 풀이 (2) | 2023.03.13 |