말하는 컴공감자의 텃밭

프로그래머스 덧칠하기 - 자바(java) Arrays.fill 본문

알고리즘/Programmers - Java

프로그래머스 덧칠하기 - 자바(java) Arrays.fill

현콩 2023. 6. 13. 13:28
728x90

프로그래머스 덧칠하기

덧칠하자 덧칠하자 직찍찍..

영역이 주어지고, 색칠이 덜된 section[]과 롤러의 크기가 주어집니다.

비어진 곳을 롤러로 칠하는 방법 중 최소의 방법을 구하는 알고리즘 문제입니당둥둥다라둥둥

 

먼저 배열을 구현하려했고, Arrays.fill 메서드를 통해 1을 먼저 넣어주었습니다. 빈곳은 0 값을 넣어 확인하기로 했습니다.

빈곳을 발견하면, 그 이후 단계는 모두 롤러 범위기에 cnt값을 올려 cnt가 롤러 크기값과 같다면 1번 칠하는걸로 작성했습니다. 또한 롤러 크기만큼 영역이 남지 않았어도 칠해야 하기때문에 마지막 부분에 cnt가 0보다 크다면 횟수를 1번 증가시켜 주었습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
class Solution {
    public int solution(int n, int m, int[] section) {
        int answer = 0;
        int cnt = 0;
        
        int[] arr = new int[n];
        Arrays.fill(arr, 1); // 배열 전부 1로 채우기.
    
        for(int i = 0; i < section.length; i++){
            arr[section[i]-1= 0// 빈곳은 0 으로 변경.
        }
        
        for(int i = 0; i < arr.length; i++){ // 배열을 돌면서 빈곳 체크 후 m이면 횟수 증가.
            if(arr[i] == 0 || cnt > 0){
                cnt ++;
            }if(cnt == m){
                    answer ++;
                    cnt = 0;
            }  
        }if(cnt > 0){ // m만큼 안채워졌어도 칠해야한다면 횟수 증가.
            answer ++;
        }
        return answer;
    }
}
cs
728x90
Comments