📖 문제

https://programmers.co.kr/learn/courses/30/lessons/42587

✏️ 나의 풀이

사실 이 문제는 예전에 풀다 실패했던 문제였다.

처음에는 문서의 순서가 바뀌었을 때를 처리하는 방법에 대해 많은 고민을 해봤지만 도저히 답을 못찾아 포기했었다.

지금 생각해보면 어려운 문제가 아니였는데 왜 포기했는지…


문서의 순서가 바뀌었을 때를 위해 index 라는 변수를 선언해 주었다.

해당 변수는 인쇄를 요청한 문서의 index 로 해당 변수가 -1일 경우 인쇄가 되었다고 판단을 한다.

👩‍💻 코드

function solution(priorities, location) {
    var answer = 0;
    let index = location;
    while(index>-1){
        const j = priorities.shift();
        let flag = true;
        for(let i = 0; i< priorities.length;i++){
            if(priorities[i] > j){
                priorities.push(j);
                index===0?index=priorities.length-1:index--;
                flag = false;
                break;
            }
        }
        if(flag){
            index--;
            answer++;
        }
    }
    return answer;
}

📖 공부내용

some()

  • 다른 사람 코드를 보다 some 함수를 보게되었다.
  • 많은 사람들이 some 함수를 이용해 풀기에 왜 이 함수를 사용하는지 확인을 해보니
  • 한 배열 안의 한 요소라도 해당 조건에 부합하면 true를 반환하는 함수이다.
  • 프린터 문제에서 나는 이 조건을 몰라 for 반복문을 이용해 풀었다.
  • 만일 some 함수를 이용해 풀면
    let flag = true;
    for(let i = 0; i< priorities.length;i++){
      if(priorities[i] > j){
          priorities.push(j);
          index===0?index=priorities.length-1:index--;
          flag = false;
          break;
      }
    }
    if(flag){
      index--;
      answer++;
    }
    
  • 이러했던 기존의 코드가 아래와 같이 바꿀 수 있다.
    const flag = priorities.some(v=>v > j)
    if(flag){
      priorities.push(j);
      index = index===0?priorities.length-1:index-1;
    }else{
      index--;
      answer++;
    }
    

every()

  • some 과 유사하지만 다른 every 이라는 함수가 있다.
  • some 은 한 요소라도 조건에 부합하면 true를 반환하지만, every 함수는 모든 요소가 조건에 부합해야 한다.
    const test = [0, 1, 2, 3];
    console.log(test.every(v=>v>0)) // false
    

댓글남기기