알고리즘 문제 풀기(프로그래머스)
https://github.com/hoinlee-moi/Algorithm
JS기본문법 다시 공부
https://github.com/hoinlee-moi/ModernJS
React 강의 듣기
https://github.com/hoinlee-moi/React_prac
왜 이렇게 몸이 낫질 않는 건지 어디가 아픈건가 싶다.
영양제랑 다이어트, 운동 <= 시간이 없지만 최대한 챙겨서 몸 컨디션을 챙길 수 있도록 하자.
주변에 괜찮다 괜찮다 하는데 잠을 자도자도 끝이 없고 솔직히 한번 아무 생각없이 입원해서 링거 맞고 하루종일 자고 싶은 마음이 들기도 한다.
하지만 스스로 한 약속을 지키기 위해 하루 30분 이상씩은 꼭 코딩 공부를 진행하고 있다.
오늘 알고리즘
체육복(탐욕법)
function solution(n, lost, reserve) { const uniformArr = new Array(n).fill(1); const uniform = uniformArr.map((v,i,ar)=>{ if(lost.includes(i+1)) --v if(reserve.includes(i+1)) ++v return v }); for(let i=0; i<=uniform.length-1; i++) { if(uniform[i]===0) { if(uniform[i-1]>1) { uniform[i-1]-- uniform[i]++ }else if(uniform[i+1]>1){ uniform[i+1]-- uniform[i]++ } } } return uniform.filter(v=>v>0).length }
n
만큼의 학생을 배열로 만들고 모든 학생이 체육복을 가지고 있는다고 가정하여 1이란 숫자를 넣어준다.map
으로 돌려 도난당한 학생일 때와 여벌을 가지고 있는 학생일 때를 비교하여 각각 체육복을 ++
, --
시킨다.uniform
배열이 완성되면 반복문 (가장 속도가 빠른 for
문을 이용했다)을 사용하여 학생이 가지고 있는 체육복이 0개라면 앞쪽 번호에 2벌을 가지고 있는지 확인하고 있다면 빌린다. uniform
에서 0보단 큰 값(체육복이 있는사람)의 수를 return
한다.다른 사람의 풀이도 확인하였는데 풀이가 비슷하고 별 다를 게 없어서 나름 괜찮은 풀이가 아니었을까 싶다!