[JAVA 문제 풀이] 286. 덧칠하기

프로그래머스 (161989)
Stupefyee's avatar
May 29, 2025
[JAVA 문제 풀이] 286. 덧칠하기
notion image
 

내가 작성한 코드

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

stupefyee