728x90
반응형
문제
생각
- 생각을 하고, 구현하는 정도의 수준이 Lv1 이라면, 나는 그정도는 되는 것 같다는 생각이 들었다.
// 1. 1차원 밀대 배열 생성
// 2. 벽을 순회하며 X 발견 시
// 3. 길이만큼 순회하며 O로 변경
// 4. answer ++
코드
public class Main {
public static void main(String[] args) {
System.out.println(solution(8,4,new int[] {2, 3, 6}));
System.out.println(solution(5,4,new int[] {1, 3}));
System.out.println(solution(4,1,new int[] {1, 2, 3, 4}));
}
public static int solution(int n, int m, int[] section) {
int answer = 0;
// 1. 1차원 밀대 배열 생성
int [] map = new int[n+1];
for (int i = 0; i < section.length; i++) {
// 벽을 칠해야할 곳은 다르게 표시
map[section[i]]++;
}
// 2. 벽을 순회하며 X 발견 시
for (int i = 1; i <= n; i++) {
if(map[i]!=0){
// 3. 길이만큼 순회하며 색칠된 곳 = O로 변경
for (int j = i; j < i+m && j<map.length; j++) {
map[j] = 0;
}
// 4. answer ++
answer++;
}
}
return answer;
}
}
다른 사람 풀이
public class Main {
public static void main(String[] args) {
System.out.println(solution(8,4,new int[] {2, 3, 6}));
System.out.println(solution(5,4,new int[] {1, 3}));
System.out.println(solution(4,1,new int[] {1, 2, 3, 4}));
}
public static int solution(int n, int m, int[] section) {
int roller = section[0];
int cnt = 1;
for(int i = 1; i < section.length; i++) {
// 덧칠이 필요한 섹션보다 현재 위치한 롤러 길이가 작다면 롤러 idx 를 이동시키고 cnt ++ 하는 로직
if(roller + m - 1 < section[i]) {
cnt++;
roller = section[i];
}
}
return cnt;
}
}
728x90
반응형
'Dev > Algorithm' 카테고리의 다른 글
[프로그래머스] 둘만의 암호 - Java (0) | 2024.05.21 |
---|---|
[프로그래머스] 대충 만든 자판 - Java (0) | 2024.05.20 |
[프로그래머스] 바탕화면 정리 - Java (0) | 2024.05.20 |
[프로그래머스] 공원 산책 - Java (0) | 2024.05.20 |
[프로그래머스] 추억 점수 (0) | 2024.05.20 |