[Programmers] 프린터 - JavaScript

Joosi_Cool·2023년 2월 17일
0

Programmers

목록 보기
24/98
post-thumbnail
post-custom-banner

문제설명



설계 과정

우선 아래 과정을 return문 만날때까지 반복
1. priorities의 맨앞 요소 num으로 빼내고 location을 1 뺀다.
-> 빼낸 값과 maxValue값과 같고, location도 -1이라면 answer을 1 더해주고 return함
-> 그게 아니고, 빼낸값과 maxValue만 같다면 answer을 1 더해주고, 새로운 maxValue를 구함.
-> 모두 아니라면, 그 값을 뒤로 보냄.



초기 코드

function solution(priorities, location) {
    var answer = 0;
    var maxValue = Math.max(...priorities);
    while(true){
        var num = priorities.shift();
        location--;
        if(location===-1&&num===maxValue){
            return ++answer;
        }
        //최댓값과 같다면
        else if(num===maxValue){
            answer++;
            maxValue = Math.max(...priorities);
        }
        //최댓값이 아니라면 뒤로 이동
        else{
            priorities.push(num);
        }   
        
        if(location===-1){
            location = priorities.length-1;
        }
    }
}


결과

이번 문제는 스택을 이용하여 어떻게 설계하느냐가 관건이었던 것 같다.
설계를 진행할때, A4용지를 가져와서 테스트 케이스를 넣어가며 위와 같은 알고리즘을 만들었다. 이렇게 차분히 테스트 케이스를 넣어가면서 알고리즘을 파악하는 것도 매우 좋은 방법인 것 같다.
이런 알고리즘만 침착하게 만들어낼 수 있다면 금방 풀어낼 수 있는 문제였다.

profile
집돌이 FE개발자의 노트
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 2월 19일

A4 까지 활용하시면서 해결하신 노력 정말 멋지십니다 👍

답글 달기