일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다.
1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
3. 그렇지 않으면 J를 인쇄합니다.
예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다.
내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 알고 싶습니다. 위의 예에서 C는 1번째로, A는 3번째로 인쇄됩니다.
현재 대기목록에 있는 문서의 중요도가 순서대로 담긴 배열 priorities와 내가 인쇄를 요청한 문서가 현재 대기목록의 어떤 위치에 있는지를 알려주는 location이 매개변수로 주어질 때, 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 return 하도록 solution 함수를 작성해주세요.
막 그렇게 어려운 문제는 아니었던거 같은데 저 location이 언제 인쇄되는지를 구현하는 게 좀 어려웠음(그냥 어려운거같긴하네..)
정답보니까 처음에 priorities에 map을 이용해서 만약에 location이 1였으면
[{값:4 , location:false}, {값:2 , location:true}] 이런식으로 구하던데 ㄹㅇ 생각도 못했음;;
나는 그냥 index 순서의 배열을 만들어서 만약에
- priorities[0]이 뒤로 가야한다 - 해당 index도 뒤로 감
- priorities[0]이 제일 커서 인쇄된다 - 인쇄 완료 ++ 해주고 해당 값이랑 index를 빼버리는데 혹시 index === location이면 완료수가 정답
뭔가 이게 더 직관적인거같긴함
두번째로 어려웠던게 priorities[0]보다 큰 값이 존재하냐?인데
1)무식하게 for문돌려서 찾기
2)some 메서드 이용 - some의 경우에는 하나라도 false가 되면 바로 false 리턴됨
3)아예 저 priorities의 최댓값을 찾아버리기 - 어차피 하나하나 비교할 필요 없이 큰 값이 존재하면 어차피 인쇄 못나가기 때문
이걸 어케찾누;; 했는데 ... 이용하면 됨
Math.max(...priorities)해서 최댓값 찾은다음에
priorities[0]가 최댓값이랑 같은 값이다?(클순 없으니깐) -> 빼버리는데 혹시 이게 내가찾던 index? -> 아니면 index도 빼버리기
그다음 다시 Math.max(...priorities)해서 나머지 중에서 최댓값 찾아주면 됨
'node.JS' 카테고리의 다른 글
백준 2839 - 설탕배달 (0) | 2023.03.07 |
---|---|
Js sort 메서드 (2) | 2023.03.07 |
백준 1021 - 회전하는 큐 (0) | 2023.03.02 |
백준 2798 - 블랙잭 (0) | 2023.03.01 |
백준 7568 - 덩치 (브루트포스) (0) | 2023.03.01 |