Coding Test/프로그래머스 Lv.0

진료순서 정하기 (indexOf함수// map(a=>(a)복사// sort((a,b)=>b-a)오름차순 역배열)

sangwoo_rhie 2023. 6. 8. 20:35

 

나의 풀이


function solution(emergency) {
    var answer = [];
    emergency.sort((a,b)=> a-b)
    for(let i = 0 ; i < emergency.length ; i++){
        answer = emergency[i]
    }
    return answer
}

 

예를들어 emergency = [3, 76, 24] 넣으면. emergency.sort((a,b) => a-b) 통해서 숫자의 오름차순 (큰 숫자부터) 정렬됨

for문으로 배열해야 하는데 틀렸음.

 

 

indexOf 함수 활용. (괄호에 넣은 요소의 인덱스가 몇번째인지 알려줌)
let arr = [2, 4, 6, 8, 10]

arr.indexOf(4) = 1 (4는 첫번째 인덱스)
sort((a, b) => b-a)
배열의 큰수부터 작은수대로 역sort 사용

 

 

 

function solution (emergency){
    let answer = [];
    let emergencyNum = emergency.map(a =>(a));
    emergencyNum.sort((a,b) => b-a); // 76 24 3
    
    for(let i = 0; i < emergency.length; i++){
        let answerNum = emergencyNum.indexOf(emergency[i])+1
        answer.push(answerNum);
    }
    return answer;
}



//
emergency.map(a =>(a)) 을 사용하고 변수선언해서 emergency를 복사해서 씀.

ex)예를들어보자. 
emergency = [37, 4, 26] 
=> result는 [1, 3, 2]로 나와야 함.

emergencyNum은 map 이후에 sort를 했으므로
emergencyNum = [37, 26, 4]

emergencyNum.indexOf(emergency[i])+1 

여기서 +1해주는 이유는 인덱스값은 0부터 시작하는데 result값이 1부터 시작하기 위함이며
indexOf 괄호에
emergencyNum.indexOf(emergency[0])+1 => emergencyNum.indexOf(37)+1 => 0+1 => 1
emergencyNum.indexOf(emergency[1])+1 => emergencyNum.indexOf(26)+1 => 2+1 => 3
emergencyNum.indexOf(emergency[2])+1 => emergencyNum.indexOf(4)+1 => 1+1 => 2

=[1, 3, 2]
이 것을 answer.push로 앞에서부터 하나씩 순차배열