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로 앞에서부터 하나씩 순차배열