[프로그래머스] 프린터

쿼카쿼카·2023년 2월 25일
0

알고리즘

목록 보기
38/67

코드

// function solution(priorities, location) {
//     let ans = 0;
    
//     while(1) {
//         const num = priorities.shift();
        
//         if(Math.max(num, ...priorities) === num) {
//             ans++;
//             if(location === 0) {
//                 return ans;
//             }
//         }
//         else {
//             priorities.push(num);
//         }
        
//         location--;
        
//         if(location === -1) {
//             location = priorities.length-1
//         }
//     }
// }

function solution(priorities, location) {
  var list = priorities.map((t,i)=>({
      my : i === location,
      val : t
  }));
  var count = 0;        
  while(true){
      var cur = list.splice(0,1)[0];        
      if(list.some(t=> t.val > cur.val )){
          list.push(cur);                        
      }
      else{            
          count++;
          if(cur.my) return count;
      }
  }
}

location을 돌려서 풀기

  • 사실 이 문제는 손도 제대로 못 댄 문제다!!!! 하지만 기 죽지 않고 열심히 풀이해보겠다!!!
  • 이 풀이 만든사람 진심 아인슈타인인가요? location을 돌려버릴 생각을 하시네...
  • 각 요소가 최댓값인지 확인 후 location이 0일 때 총 횟수를 반환해요
  • 그리고 돌 때마다 location을 깎고, -1이 되면 length-1로 변경하는 스윗함에 이 다썪어
  • 그리고 프린트에 들어갈 때만 ans를 ++ 해주고 막판에 ans를 반환....천재다 난 머리 다섯 번 깨져도 저런 생각 안 들 듯. 다른일 알아봐야하나

기본적인 객체 풀이

  • 객체에 내가 고른 타겟과 value까지 저장
  • 위와 비슷한 방법으로 빙글빙글 돌며 count 업!
profile
쿼카에요

0개의 댓글