시도한 풀이
function solution(enroll, referral, seller, amount) {
let result = {};
let parent = {};
for (let i = 0; i < enroll.length; i++) {
parent[enroll[i]] = referral[i];
}
for (let name of enroll) {
result[name] = 0;
}
for (let j = 0; j < seller.length; j++) {
let money = amount[j] * 100;
let curName = seller[j];
while(curName !== "-" && money > 0) {
result[curName] += money - Math.floor(money / 10);
curName = parent[curName];
money = Math.floor(money / 10);
}
}
return enroll.map(name => result[name]);
}
[어려웠던 점]
결국에는 “-”가 나올 때까지 거슬러 가야 하는 부분이 어려웠다. while 쓰기.
[새롭게 알게된 점]
1. Math.floor() - 소수점 있으면 버림
2. return enroll.map(name => result[name]);
마지막에 map 써서 배열로 변한.
Array.prototype.map()은 배열의 각 요소를 주어진 함수로 변환한 결과를 모아서
새 배열을 만듬.
map은 enroll 배열의 각 요소(name)를 하나씩 꺼낸 후 result[name] 값을 꺼냄.
그 값들을 새로운 배열에 넣음.
3. Array.from()과 new Array().fill()
전자는 인덱스를 이용하여 초기화 시켜야할 때 / 배열의 요소를 객체나 배열로 초기화 시켜야할 때.
후자는 기본 자료형으로 초기화할 때.
4. 꼭 {}를 써야하나? []를 쓰면 안 되나?
써도 된다!
(1) {}를 사용했을 때

(2) []를 사용했을 때
![[]를 사용했을 때](https://velog.velcdn.com/images/kwon_ion/post/779e7750-3d1d-4265-932b-edbdf0e8faaa/image.png)
데이터의 양이 늘어날 수록 성능 차이가 유의미해지는 걸 볼 수 있다.
배열에 문자열 키를 쓰게 되면 일반 객체처럼 취급되면서 희소 배열 처리가 되어 느려진다고 한다.
코딩 테스트 합격자 되기 자바스크립트 - 이선협, 박경록 저
new Array().fill()과 Array.from()의 차이