
내가 작성한 코드
class Solution {
public int solution(int n, int m, int[] section) {
int answer = 0;
int[] paint = new int[n + 1]; // 페인트 칠해진 구역을 표시하기 위한 배열
// 칠해야 하는 곳 표시
for (int i = 0; i < section.length; i++) {
paint[section[i]] = 1;
}
// 페인트 칠하기
for (int i = 1; i <= n; i++) {
// 칠해져 있지 않는 부분 찾아서
if (paint[i] == 1) {
answer++;
// m만큼 칠하기
for (int j = i; j < i + m; j++) {
// 범위를 벗어나면 종료
if (j > n) {
break;
}
paint[j] = 0; // 칠한 곳 0으로 표시
}
}
}
return answer;
}
}
다른 사람의 코드
class Solution {
public int solution(int n, int m, int[] section) {
int roller = section[0]; // 시작 위치
int cnt = 1; // 최소한의 롤러 수
// 첫 번째 섹션에서 시작하여, 다음 섹션이 현재 롤러의 범위를 벗어나는지 확인
for(int i = 1; i < section.length; i++) {
// 현재 롤러의 범위가 다음 섹션을 포함하지 않는 경우
if(roller + m - 1 < section[i]) {
cnt++; // 롤러 수 증가
roller = section[i]; // 롤러의 위치를 다음 섹션의 시작 위치로 업데이트
}
}
return cnt;
}
}
Share article