- 첫 번째 for문으로 문제에서 주어진 조건대로 체육복의 개수를 저장한다. reserve와 lost에 모두 들어있는 경우도 생각해야 한다.
- 두 번째 for문으로 최대한 많은 사람이 체육복을 입을 수 있도록 처리한다. 체육복이 2개이고 앞사람이 체육복이 없는 경우만 체육복을 전달한다. 그 후 뒷사람도 동일한 코드를 반복한다. 문제 조건 상 인접한 앞, 뒷사람에게만 체육복을 나눠줄 수 있다. 이 조건이 바로 이 문제를 greedy하게 풀어도 되는 조건이다.
- 체육복이 0이 아닌 사람의 수를 계산하면 끝~
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
27
28
29
30
31
32
33
34
|
function solution(n, lost, reserve) {
let arr = [];
for (let i = 0; i < n; i++) {
let cloth = 1;
if (reserve.includes(i+1)) {
cloth = 2;
}
if (lost.includes(i+1)) {
cloth--;
}
arr.push(cloth);
}
for (let i = 0; i < n; i++) {
if (arr[i] == 2) {
if (i-1 >= 0 && arr[i-1]==0) {
arr[i-1]++;
arr[i]--;
}
}
if (arr[i] == 2) {
if (i+1 < n && arr[i+1]==0) {
arr[i+1]++;
arr[i]--;
}
}
}
var answer = 0;
arr.forEach((elem) => {
if (elem != 0) {
answer++;
}
})
return answer;
}
|
cs |
'개발 > 알고리즘' 카테고리의 다른 글
[2021 카카오 신입 공채][Javascript] 메뉴 리뉴얼 (0) | 2021.04.25 |
---|---|
[프로그래머스][Javascript] 타겟 넘버 (0) | 2021.04.25 |
[백준1021][Java] 회전하는 큐 (0) | 2020.04.29 |
[C++][백준 2178] 미로탐색 - 가중치가 없는 그래프의 최단경로? (0) | 2020.03.13 |
[백준 5014][C++] 스타트 링크 (0) | 2020.02.09 |
댓글