프린터

Happhee·2022년 2월 16일
0

[ Lv2 ] programmers

목록 보기
27/32
post-thumbnail

📝 프린터

🖥 나의 JS 코드

첫번째 시도

재귀함수를 통하여 우선순위를 계산하고, 위치를 계산하는 난잡한 코드로 해결하였다

function rePriorities(priorities){
    let tmp = priorities[0];
    for(let i = 0 ; i < priorities.length-1; i++){
        priorities[i] = priorities[i+1];
    }
    priorities[priorities.length-1] = tmp;
    return priorities;
}
function printDocs(priorities, find_index, count){
    let max = Math.max(...priorities);
    if(max === priorities[0] && find_index[0]){
        return count;
    } else if (max === priorities[0] && !find_index[0]){
        count++;
        return printDocs(priorities.slice(1,priorities.length), 
                         find_index.slice(1, find_index.length),
                         count);
    } else {
        return printDocs(rePriorities(priorities),
                        rePriorities(find_index),
                        count)
    }
}
function solution(priorities, location) {
 
    let find_index = new Array(priorities.length).fill(false);
    find_index[location] = true;

    console.log(printDocs(priorities, find_index, 1));
    
    return printDocs(priorities, find_index, 1);
}

두번째 시도

수행되는 문서의 이름을 우선 '*'로 채워넣고 찾아야 할 문서의 이름만 location으로 설정하여 문서들의 이름을 옮기는 방법으로 구현하였다

그리고 반복문은 우선순위의 배열이 모두 제거 될 때까지 실행하였다

최종 코드는 다음과 같다

function solution(priorities, location) {
    
  // 완료된 문서의 이름을 담을 배열
  	let successTaskName = [];
  // 입력된 문서 이름들을 초기화
    let taskNames = new Array(priorities.length).fill('*');
  // 찾아야 할 문서만 이름 변경
  	taskNames[location] = 'location'

    while(priorities.length != 0){

    	// 맨 앞의 일을 가져오고
      	const currentTask = priorities.shift();
        const name = taskNames.shift();
      // 남은 일들의 최댓값보다 작으면 맨 뒤로 옮겨준다
        if(Math.max(...priorities) > currentTask){
            priorities.push(currentTask);
            taskNames.push(name);
        } else {
          // 작업할 문서가 최대값이면 이를 완료 스택에 넣어줌
            successTaskName.push(name);
        }
    }
  // 인덱스 값에 더하기 1을 하여 최종 문제 해결
    return successTaskName.indexOf('location') + 1
}
profile
즐기면서 정확하게 나아가는 웹프론트엔드 개발자 https://happhee-dev.tistory.com/ 로 이전하였습니다

0개의 댓글