Problem Solving/프로그래머스

[프로그래머스/JavaScript] 프린터

세고래 2022. 10. 3. 19:18

https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1) 풀이

평소에 배열 함수를 pop shift 이런 것만 사용했었는데,

이번에 처음 every 를 활용해서 문제를 풀어보았다! 뭔가 뿌듯,,

다른 분들은 some 을 주로 사용하셨던데 some은 1개라도 제일 첫번째 우선순위보다 크면 true를 리턴해서

좀 더 효율적이라 그런가..? 라는 생각이 들었다 나중엔 some을 활용해보는 걸루..

👀 찾아보니 내가 every를 사용한 방법이랑 성능상에선 똑같은듯..?  [자료] 자바스크립트 every, some

대신 다른 분들은 지금의 우선순위보다 큰지를 체크, 나는 모든 원소가 작은지를 체크.. 둘 다 우선순위가 더 큰

요소 만나면 즉시 중단돼서 성능상의 문제는 차이가 없는 것 같다!

 

그리고 location 체크를 위해 인덱스와 우선순위 값을 객체로 만들어 배열을 다시 만들어주는 과정에서,

나는 그냥 기존 priorities를 순회하면서 하나하나 넣어줬는데

다른 분들은 map 함수를 활용하셨더라! map으로 그냥 객체 배열을 반환시켜주는 형태루,, 요부분이 좀 아쉽다

충분히 생각할 수 있는 방법인데 활용을 못해서😂

2) 최종 소스코드
function solution(priorities, location) {
    let answer = 0;
    let myPri=[];
    for(let i=0;i<priorities.length;i++){ //location 인지 아닌지 체크하기 위해 인덱스도 넣어줌
        myPri.push({idx:i,value:priorities[i]});
    }
    while(true){
            let first=myPri.shift(); //첫번째 값
            let flg=myPri.every(item=>item.value<=first.value);
            if(flg){ //우선순위 큰 게 없으면
                answer++; //인쇄
                if(first.idx===location) break; //location 이라면
            }else myPri.push(first);      
    }
    return answer;
}
3) 참고자료

https://niceman.tistory.com/78

 

Javascript(자바스크립트) - 배열 처리 정리(3) - every, some

Javascript - every, some 설명 ① every, some - 특정 조건을 만족하는지 배열 내부의 원소를 순회하면서 검사한다. ② 조건에 만족하면 True, 그 반대는 False 를 리턴(Return) ③ 프로젝트 진행 중 배열 내..

niceman.tistory.com

 

728x90