코딩 테스트/프로그래머스(LV2)

[프로그래머스] 프로세스 (LV2 - JavaScript)

dev-hpk 2024. 11. 16. 12:15
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

1. 문제

제한사항

입출력 예

입출력 예 설명

 

2. 정답 풀이

풀이 전략

  • 큐 활용.
  • 정답을 위한 인덱스 배열 idx 선언
  • 우선순위가 가장 높은 프로세스인 경우 큐와 인덱스 배열에서 삭제한다.
  • 우선순위가 더 높은 프로세스가 큐에 있는 경우 큐와 인덱스 배열에서 삭제 후 마지막에 추가한다.
  • 우선순위가 가장 높은 프로세스면서 index가 location인 경우 순회를 종료하고 정답 리턴
function solution(priorities, location) {
    let answer = 0;
    // 실행 대기 큐의 인덱스 배열
    let idx = Array.from({length: priorities.length}, (_,idx) => idx);

    while(priorities.length > 0){
        const max_value = Math.max(...priorities);
        
        // 우선 순위가 더 높은 프로세스가 있는 경우
        if (priorities[0] < max_value) {
        	// 프로세스의 0번 인덱스(꺼낸 프로세스)를 큐에 마지막에 넣는다. 
            priorities = [...priorities.slice(1), priorities[0]];
            // 인덱스 배열도 동일하게 처리
            idx = [...idx.slice(1), idx[0]];
        } else {
        	// 우선 순위가 가장 높은 프로세스인 경우
            answer+=1; // 실행 순서 +1
            // location에 해당하는 프로세스인 경우 순회 종료
            if (idx[0] === location) break;
            // 실행 대기 큐, 인덱스 배열에서 우선 순위가 가장 높은 프로세스를 제거
            priorities = priorities.slice(1);
            idx = idx.slice(1);
        }
    }
    return answer;
}

 

 

 

시간이 좀 걸리긴 했지만 인덱스를 처리하는 배열을 따로 선언해서 문제를 간단하게 풀 수 있었던 것 같다..😅

 

 

 

[프로그래머스] 튜플 (LV2 - JavaScript)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 문제 제한사항 입출력 예입출력 예 설명 2. 정답 풀이풀이 전략문자열

dev-hpk.tistory.com

 

 

[프로그래머스] 피로도 (LV2 - JavaScript)

1. 문제 제한사항 입출력 예입출력 예 설명 2. 정답 풀이풀이 전략깊이 우선 탐색 (Depth-First Search) 사용던전을 탐험했는지 확인하기 위한 hash 배열 사용재귀 함수 호출을 통해 던전 입장 순서별

dev-hpk.tistory.com