문제풀이
처음에 이 문제를 보고 꼼꼼히 읽어보지 않아서 꽤 애를 먹었다. 중요도를 1이 제일 중요한 것으로 이해해서 한 동안 왜 이렇게 입출력 예시가 되어있는지 이해하는데 힘들었다.
우선 순위에 따라 정렬을 하더라도 결국에는 return 값이 기존 배열의 index 값을 return 하여야 했기에 for문을 사용해서 객체 형태로 배열 요소들에게 각각 id를 부여하였다. 그리고 맨 앞의 요소들을 shift를 이용해서 빼내고 이를 filter 함수를 이용해서 맨 앞과 그 뒤에 있는 value 값들을 비교해서 우선 value 값들이 존재한다면 다시 뒤로 push 해주었고 그렇지 않은 경우에는 빈 배열(resultArr)에 차근차근히 우선순위 순서대로 push 해주어 이를 id와 location을 비교하는 식으로 코드를 구성했다. 문제를 풀면서 생각보다 시간이 너무 오래걸려서 아쉬웠던 것 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
function solution(priorities, location) {
let answer = 0;
let setArr = [];
let resultArr = [];
for (let x = 0; x < priorities.length; x++) {
setArr[x] = {id: x, value: priorities[x]}
}
while (setArr.length > 0) {
const front = setArr.shift();
const isOver = setArr.filter(e => e.value > front.value).length;
if (isOver > 0) {
setArr.push(front);
} else {
resultArr.push(front);
}
}
for (let y = 0; y < resultArr.length; y++) {
answer++;
if (resultArr[y].id === location) {
break;
}
}
return answer;
}
|
cs |
추가풀이
1
|
return resultArr.findIndex(e => e.id === location) + 1;
|
cs |
본 풀이 20~23 줄 내용을 위 같이 바꾸는 것이 더 효율적이라 생각된다. findIndex를 사용해서 id와 location을 비교하고 index 값과 리턴 값이 1 차이 나기 때문에 +1 해주는 것 까지
'프로그래머스' 카테고리의 다른 글
6/4[문제풀이] 프로그래머스 Lv2 H-Index (0) | 2021.06.04 |
---|---|
6/3[문제풀이] 프로그래머스 Lv2 예상 대진표 (0) | 2021.06.03 |
5/31[문제풀이] 프로그래머스 Lv2 기능개발 (0) | 2021.05.31 |
5/28[문제풀이] 프로그래머스 Lv2 타켓 넘버 (0) | 2021.05.28 |
5/27[문제풀이] 프로그래머스 Lv2 가장 큰 수 (0) | 2021.05.27 |