일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 이것이 코딩테스트다 with 파이썬
- 프로그래머스
- Baekjoon
- 백준
- programmers
- 그리디
- 네트워크
- Typescript
- node.js
- Next.js
- Python
- Lv2
- CSS
- SWEA
- bfs/dfs
- 자바
- 자바스크립트
- 정렬
- Lv1
- React
- 프로그래머스 JS
- CLASS
- 코딩테스트 입문
- 알고리즘
- greedy
- js
- javascript
- 코딩테스트
- 연습문제
- Java
Archives
- Today
- Total
개발야옹
[Programmers] Greedy - 체육복 lv1 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=javascript
function solution(n, lost, reserve) {
var answer = 0;
lost = lost.map((l) => {
if(reserve.includes(l)) {
reserve = new Set(reserve);
reserve.delete(l);
reserve = Array.from(reserve);
} else return l;
});
let borrow = new Array(n).fill().map(n => 0);
borrow = borrow.map((n, index) => {
if(reserve.includes(index+1)) {
return 1;
} else return 0;
});
let student = new Array(n).fill().map(n => true);
student = student.map((n, index) => {
if(lost.includes(index+1)) {
return false;
} else return true;
});
student.forEach((s, index) => {
if(!s) { // 체육복 없는 학생
let left = index -1 < 0 ? null : index -1;
let right = index +1 >= student.length ? null : index +1;
if(left !== null && borrow[left] === 1) {
student[index] = true;
borrow[left] = 0;
} else if(borrow[right] !== null && borrow[right] === 1) {
student[index] = true;
borrow[right] = 0;
}
}
})
return student.filter(s => s === true).length;
}
728x90
'Algorithm\CodingTest > Programmers' 카테고리의 다른 글
[Programmers] 연습문제 - 숫자의 표현 (0) | 2023.03.08 |
---|---|
[Programmers] 월간 코드 챌린지 시즌1 - 이진 변환 반복하기 (0) | 2023.03.01 |
[Programmers] 코딩테스트 입문 - 분수의 덧셈 (0) | 2023.02.24 |
[Programmers] 코딩테스트 입문 - 유한소수 판별하기 (0) | 2023.02.24 |
[Programmers] 코딩테스트 입문 - 등수 매기기 (0) | 2023.02.16 |