[프로그래머스 - Java] 덧칠하기

RedPanda·2025년 4월 25일
0

[알고리즘] Java

목록 보기
22/22

덧칠하기

이번 문제는 section의 배열을 순회하면서 선택한 요소가 m이라는 범위 안에 있는지 확인하는 문제이다.

풀이 방식은 이러하다.

  1. i번째 section에 롤러 첫부분(왼쪽)을 고정시킨다.
  2. j를 사용하여 section을 순회하면서 j가 i+m범위 안에 있는지 확인한다.
  3. 있으면 j를 증가시켜 다음 빈 section을 확인하고, 없으면 i를 j로 이동시킨다.
  4. j가 section의 끝인데 범위 안에 들면 종료하고 answer 를 반환한다.
class Solution {
    public int solution(int n, int m, int[] section) {
        int answer = 0;
        // section만큼 일단 반복
        for(int i = 0; i < section.length; i++){
            answer++;
            for(int j = i; j < section.length; j++){
                if(section[j] > section[i] + m - 1){
                    i = j-1;
                    break;
                }
                if(j == section.length -1) return answer;
            }
        }
        // 반복 내부에서 
        return answer;
    }
}

하드코딩하다가 푼 것 같은데 얼떨결에 풀어서 찜찜하다. 다른 사람들도 크게 다르지 않은 것 같아 넘어간다.

profile
끄적끄적 코딩일기

0개의 댓글