function solution(emergency) {
let obj = {}
let result = []
for(let i in emergency){
obj[emergency[i]] = Number(i)
}
emergency.sort((a,b)=>b-a)
for(let j in emergency){
result[obj[emergency[j]]] = Number(j)+1
}
return result
}
개인적으로 여태까지 푼 문제 중에 가장 어려웠다
최대값 순서를 숫자로 부여해야하는데 sort()를 쓰면 emergency의 원래 순서를 알수가 없다. 그래서 원래 순서 index를 저장할 수 있게 객체를 선언해서 할당했다.
키
= emergency의 값
, 값
= emergency의 index
로 하는 객체 obj를 생성한다.let obj = {}
for(let i in emergency){
obj[emergency[i]] = Number(i)
}
// emergency = [3, 76, 24]
// obj = {"3":0, "76":1, "24":2}
emergency.sort((a,b)=>b-a)
// emergency = [76, 24, 3]
for(let j in emergency){
result[obj[emergency[j]]] = Number(j)+1
}
// j = 0 이면 Number(j)+1 = 1을 할당한다
// emergency[j] = emergency[0] = 76 이고
// > obj[emergency[j]] = obj[76] = 1 이고
// >> result[obj[emergency[j]]] = result[1] 에 1을 할당한다
// >>> result = [,1]
// j = 1 이면 Number(j)+1 = 2를 할당한다
// emergency[j] = emergency[1] = 24 이고
// > obj[emergency[j]] = obj[24] = 2 이고
// >> result[obj[emergency[j]]] = result[2] 에 2을 할당한다
// >>> result = [,1,2]
// j = 2 이면 Number(j)+1 = 3을 할당한다
// emergency[j] = emergency[2] = 3 이고
// > obj[emergency[j]] = obj[3] = 0 이고
// >> result[obj[emergency[j]]] = result[0] 에 3을 할당한다
// >>> result = [3,1,2]