본문 바로가기

자료구조&알고리즘/알고리즘-문제풀이

[프로그래머스-Level2] 프린터

나의 풀이

- location의 값을 Integer 일때 어떻게 구분해야 할 지 고민하다가 문자열로 바꿈 (length 비교)

- targetElement의 length 보다 큰 수가 priorities array에 존재하면 push하여 맨 뒤에 넣고, 그렇지 않으면 프린트 됨 (array에서 그대로 제거되면서 순번(answer)은 1씩 증가)

- 요청한 element 이면 return

function solution(priorities, location) {

    priorities.map((element, index) => {
        let tempElement = priorities.shift();
        element = '';
        for (let i = 0; i < tempElement; i++) {
            element += (index === location)? '!' : '*';
        }
        priorities.push(element);
    })

    let answer = 0;
    
    while (priorities.length > 0) {

        let targetElement = priorities.shift();
        // targetElement보다 큰 수가 있으면 끝에 넣고
        // 그렇지 않으면 그대로 array에서 뺀다
        let boolean = priorities.every(element => element.length <= targetElement.length);
        if (!boolean) {
            priorities.push(targetElement);
        } else {
            answer += 1;
            if (targetElement.includes('!')) {
                return answer;
            }
        }
    }
}

 

반응형