FrontEnd/프로그래머스

[JS] 진료순서 정하기

728x90

처음에는 약간 복잡하게 생각했다. 우선 idx를 포함한 배열을 정렬한다. 그러면 그 배열에는 정렬되기전 idx값을 포함하기 때문에 새로운 배열을 만들어 그에따라 값을 넣어주었다.

 

[3,76,24] 라면

 

[[3,0],[76,1],[24,2]]

[[76,1],[24,2],[3,0]] 

 

이란 배열을 얻게 되는데 해당 배열을 돌면서 

1의 값을 배열 두번째에 넣어주고

2의 값을 배열  세번째에 넣어주고

3의 값을 배열 첫번째에 넣어주면 된다.

 

 

function solution(emergency) {
    const e = emergency.map((el,idx) => [el,idx])
    console.log(e)
    
    var e2 = e.sort((a,b) => b[0]-a[0]).map((el,idx) => [idx,el[1]]);
    
    const answer = []
    for (let i=0 ; i<emergency.length ; i++){
        answer[e2[i][1]] = e2[i][0] + 1
    }
    return answer;
    
    
    
    
}

 

 

문제를 풀고나니 분명 뭔가 매끄러운 방법이 있을 것 같아서 조금더 찾아보았다.

indexOf의 기능을 활용하면 값으로 그 배열의 index를 바로 찾을 수 있는데 나와 기본적인 방식은 같았지만 훨씬 더 가독성이 좋은 코드를 만들 수 있었다.

 

 

function solution(emergency) { 
    
    
    const e = [...emergency].sort((a,b) => b-a)
    
    return emergency.map(el => e.indexOf(el)+1)
    
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 모음 제거  (0) 2023.01.27
[JS] 개미 군단  (0) 2023.01.27
[JS] 숨어있는 숫자의 덧셈(1)  (0) 2023.01.24
[JS] 제곱수 판별하기  (0) 2023.01.24
[JS] 문자열안에 문자열  (0) 2023.01.23