프로그래머스/Level1
프로그래머스#49(Lv.1)_체육복
개발자_조이킴
2021. 11. 3. 16:02
체육복
다른 분들이 하신것 보고 배우고 또 배우자! (find 메소드!)
※ find MDN
포기하지말고 계속해서 공부하자!
화이팅:)
// 프로그래머스 - 체육복 function solution(n, lost, reserve) { // 여벌을 가지고 있지만 두벌 중 한번을 도둑 맞은 경우, 해당 학생(번호)를 lost와 reserve에서 모두 제거 let newLost = lost.filter((el) => !reserve.includes(el)) let newReserve = reserve.filter((el) => !lost.includes(el)) // 오름차순으로 정렬: 최대한 많은 학생들에게 체육복을 나눠주기 위함 newLost.sort((a, b) => a - b) newReserve.sort((a, b) => a - b) // reserve의 길이가 0이 될때까지 while문을 돌려준다. while(newReserve.length > 0) { // reserve 맨 앞의 요소를 head에 할당 // reserve 맨 앞의 요소는 제거 (하나씩 차감) let head = newReserve.shift() for(let i = 0; i < newLost.length; i++) { // 배열 lost i번째 요소에 +1, -1 값이 head와 같다면 해당 요소를 배열 lost에서 제거 if(newLost[i] - 1 === head || newLost[i] + 1 === head) { newLost.splice(i, 1) break; } } } // 전체학생 수 n에서 여벌의 체육복을 받지 못한 친구들의 명수(lost.length)를 뺴준다 return n - newLost.length } |
<다른분의 solution>
![]() |