deo2kim
맞왜틀
deo2kim
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
deo2kim

맞왜틀

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

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

2020. 7. 28. 17:16
반응형

문제 해결

1. 인쇄되는 조건과 내 문서의 위치 그리고 인쇄가 몇번 됐는지 체크하며 문제를 해결한다.

2. 맨 앞의 문서를 꺼내고 우선순위가 제일 높은지 확인한다.

3. 우선순위가 제일 높다면 인쇄를 하고 카운트를 올려준다.

4. 아니라면 꺼낸 문서를 맨 뒤에 집어 넣는다.

5. 문서를 꺼낼 때마다 내문서의 위치를 바꿔준다.

6. 다시 2번으로 돌아가 반복한다.

 

😎 스택/큐 문제이다.

 

소스 코드

function solution(priorities, location) {
    var answer = 0;
    // 인쇄를 몇번 했는지
    var cnt = 0
    // 내문서의 위치
    var myDoc = location
    while (priorities.length > 0) {
        // 맨 앞의 문서를 꺼낸다
        var c = priorities.shift()
        // 만약 맨앞의 문서의 우선순위보다 높은 문서가 존재한다면
        if (priorities.filter((e) => e > c).length > 0) {
            // 인쇄를 하지 않고 배열의 맨 뒤에 넣는다.
            priorities.push(c)
            // 맨앞의 문서의 우선순위보다 높은 문서가 없다면
        } else {
            // 인쇄 카운트를 올려주고
            cnt ++
            // 그게 바로 내문서라면 
            if (myDoc == 0) {
                // 함수를 종료하고 cnt를 리턴한다.
                return answer = cnt
            }
        }
        // 문서를 하나 꺼낼 때마다 내문서의 위치를 하나씩 줄여간다
        myDoc --
        // 만약 내문서가 맨뒤로 갔다면
        if (myDoc === -1) {
            // 내문서 위치인덱스도 맨뒤로 바꿔준다.
            myDoc = priorities.length - 1
        }

    }
    return answer;
}


console.log(solution([2, 1, 3, 2], 2))
console.log(solution([1, 1, 9, 1, 1, 1], 0))

 

출처: 프로그래머스

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

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린��

programmers.co.kr

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm Problem > JavaScript' 카테고리의 다른 글

[javascript] 프로그래머스 - 두 개 뽑아서 더하기  (2) 2020.10.19
[JavaScript] 프로그래머스 - 베스트앨범  (0) 2020.08.01
[JavaScript] 프로그래머스 - 영어 끝말잇기(Summer/Winter Coding(~2018))  (0) 2020.07.26
[JavaScript] 프로그래머스 - 기능개발  (0) 2020.07.25
[JavaScript] 프로그래머스 - 체육복  (0) 2020.07.25
    'Algorithm Problem/JavaScript' 카테고리의 다른 글
    • [javascript] 프로그래머스 - 두 개 뽑아서 더하기
    • [JavaScript] 프로그래머스 - 베스트앨범
    • [JavaScript] 프로그래머스 - 영어 끝말잇기(Summer/Winter Coding(~2018))
    • [JavaScript] 프로그래머스 - 기능개발
    deo2kim
    deo2kim
    코딩 기록하기

    티스토리툴바