Lv.2 프린터

🤖문제

👍 2022년 1월 29일

내 코드

<script>
  function solution(priorities, location) {
      let answer = 0;
      let prioritiesArr = priorities.map((v,i) => [i,v]);
      let sequence = [];

      while (true) {
          const currPrint = prioritiesArr.shift();
          if (prioritiesArr.some((value) => value[1] > currPrint[1])) prioritiesArr.push(currPrint);
          else {
              sequence.push(currPrint);
              for (let j=0; j< sequence.length; j++) {
                  if (sequence[j][0] === location) {
                      return answer = j+1;
                  }
              }
          }
      } 
  }
</script>

더 효율적인 코드

<script>
    function solution(priorities, location) {
      var answer = 0;
      const pri = priorities.map((a,i) => [a,i]);
      const arr = [];


      for(let i = 0; i < pri.length ;){
          const temp = pri.shift();
          if( pri.some((a)=> temp[0]< a[0])) pri.push(temp);
          else {
              arr.push(temp);
              if(arr[answer][1] == location) break;
              else answer ++;
          }
       }
       return answer+1;
    }
</script>

풀릴 듯 안풀리고 계속 시간초과나서 머리 반으로 부서질 뻔 한 문제🙂

  • 내가 요청한 문서의 고유 인덱스 값을 알아야 하는데 그걸 어떻게 처리해야할지 몰라서 삽질했던게 너무 힘들었다... map 쓰면 이렇게 간단했을 것을...
  • 그리고 중간에 some쓴 곳도 원래는 문서의 max값 구해서 그거랑 일치하는지 구하려고 했는데 2차원 배열에서 특정 열의 최대값을 어떻게 구할까... 고민하다가 '아 이건 아니다'싶어서 질문하기에서 도움받았다....
  • 밑에 코드 보면 첫 번째 else부분에서 나와 많이 차이가 나는 것을 알 수 있다. sequence는 빈 배열로 시작해서 원소가 하나씩 추가되니까 answer 변수를 따로 둬서 1씩 증가하게 했다. 나는 sequence를 for문 굳이 돌아서 더 비효율적이다...

좋은 웹페이지 즐겨찾기