프로그래머스
[프로그래머스] 덧칠하기_ JAVA
채니◟( ˘ ³˘)◞
2023. 9. 5. 15:14
o 문제
https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
ㅇ 풀이
벽의 길이 크기의 배열(paint)을 생성 후, 기본으로 모두 1로 준 다음, 다시 칠해야할 부분을 0으로 바꾼다.
그 후 paint 배열을 돌면서 0인 부분에서 롤 크기(m) 의 길이만큼 1로 바꿔준다.
이때 주의할 점은 paint 크기를 넘어서 1로 바꾸는 인덱스 오류가 나지 않기 위해 paint 길이보다 적게 바꿔줘야 한다.
class Solution {
public int solution(int n, int m, int[] section) {
int[] paint = new int[n];
for (int i = 0; i < paint.length; i++) {
paint[i] = 1;
}
for (int i = 0; i < section.length; i++) {
paint[section[i] - 1] = 0;
}
//System.out.println(Arrays.toString(paint));
int cnt = 0;
for (int i = 0; i < paint.length; i++) {
for (int k = 0; k < paint.length; k++) {
if (paint[k] == 1)
break;
}
if (paint[i] == 0) {
for (int j = i; j < i + m; j++) {
if(j < paint.length){
paint[j] = 1;
}
}
cnt++;
}
}
return cnt;
}
}