[Greedy]짐나르기

이영광·2021년 8월 28일
0

알고리즘

목록 보기
12/16

*짐의 무게가 [70,50,80,50]kg(stuff)있을때 박수 무게 제한(limit)
짐 2개가 limit를 넘는다면 박스에는 한개밖에 담을수 없고 리미트보다 적거나 같을때는 2개넣을수있다

최소한의 박스개수를 구하라

입출력예시

movingStuff([70,50,80,50]),100 // 3

function limitlimit(stuff,limit){
  	
  let count = 0
  
  stuff.sorg((a,b)=>a-b) // 비교를 수월하기위해 정렬
  
  let arr = stuff
  
  while(arr.length>0){
  
  	if((arr[0]+arr[arr.length-1])<=limit){
      
      arr.shift()
      arr.pop()
      count++
    
  }else{
  	arr.pop()
    count++
  
  }
  
  
  
  
  
  return count


}


코드리뷰: 우선 정렬을 시켜준후 큐형식으로 우선 짐을 싫었다면

옮길짐을 없애줘야하기때문에 while로 설정후

첫번째 짐(가장키로수가적으짐) 과 마지막짐(가장키로수가 많은짐) 과비교해서

리미트가 넘긴다면 큰짐만 싫고 리미트와 같거나 낮다면 둘다 팝 시프트 해서 짐덩이들에서 빼주는형식으로 했다

profile
《REACT》《JAVASCRIPT 》 만지고있어욤

0개의 댓글