728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
public class Solution31_1 {
public static int solution(int n, int m, int[] section) {
int answer = 0;
int start = section[0]; // 페인트 칠하는 시작 구역
answer++;
for (int i = 1; i < section.length; i++) {
if (start + m > section[i]) {
continue;
}
start = section[i];
answer++;
}
return answer;
}
public static void main(String[] args) {
int n = 8;
int m = 4;
int[] section = { 2, 3, 6 };
System.out.println(solution(n, m, section));
}
}
페인트 덧칠 시작구역이 2고 롤러 길이가 4라면 6까지가 아닌 5까지 칠할 수 있기 때문에 (2,3,4,5)
반복문 조건이 start + m > section[i]가 된다
for(int item : section) {
if(start+m>item)
continue;
start=item;
answer++;
}
이렇게 for each 구문으로도 안의 for문을 작성 가능하다.
하지만 section 인덱스를 1부터 지정해주면 되기 때문에 일반 for문으로 하였다
728x90
'Java 알고리즘 공부 (프로그래머스)' 카테고리의 다른 글
| [프로그래머스 Lv1] k번째수 (Java) (1) | 2023.10.05 |
|---|---|
| [프로그래머스 Lv1] 예산 (Java) (0) | 2023.10.03 |
| [프로그래머스 Lv1] 소수 만들기 (Java) (0) | 2023.10.03 |
| [프로그래머스 Lv1] x만큼 간격이 있는 n개의 숫자 (Java) (0) | 2023.10.03 |
| [프로그래머스 Lv1] 핸드폰 번호 가리기 (Java) (0) | 2023.10.03 |