자기 옆에 있는 숫자를 더하여 평균을 구하시오.
배열에 0 또는 1 값이 있거나 null 또는 None 인 경우 메서드에서 빈 배열을 반환해야합니다.
1 2 | Input: [ 1, 3, 5, 1, -10] Output: [ 2, 4, 3, -4.5] | cs |
내 답
1 2 3 4 5 | function averages(numbers) { return numbers==null ? []:numbers.map((value,i) => { return (numbers[i]+numbers[i+1])/2;}).splice(0,numbers.length-1); } | cs |
best으로 뽑힌 답변1
1 2 3 4 5 6 7 8 9 10 11 12 13 | function averages(numbers) { var final = []; if (numbers) { for (var i=0; i<numbers.length-1; i++) { final.push((numbers[i] + numbers[i+1]) / 2); } } return final; } | cs |
best으로 뽑힌 답변2
1 2 3 4 5 | function averages(numbers) { return numbers ? numbers.map((v, i, a) => (v + a[i + 1]) / 2).slice(0, -1) : []; } | cs |
배운 점
value는 실행되고 있는 숫자를 가르키므로 numbers[i] 대신에 v로 대신하여 표기가 가능하다.
slice는 array의 length로 표시하지 않더라도 -1이라 표기하면 맨끝에서 첫번째를 가리키므로 원하는 배열 선택이 가능한다.
그리고 이미 앞에 return 표시가 있기 때문에 굳이 기재하지 않아도 되며, map return 넣지 않으면 null로 인한 에러가 생기지 않는다.
numbers === null ?을 표기하지 않고, numbers ? 로 표기가능하다.
'javaScript > 알고리즘 문제 풀이' 카테고리의 다른 글
배열 안에서 다른 숫자를 리턴하라. (0) | 2018.06.12 |
---|---|
기한 내에 쿠폰이 회수되었는지 증명하라. (0) | 2018.06.11 |
a-m이 아닌 문자 길이를 구하라 (0) | 2018.06.05 |
배열을 짝수나 홀수로 리턴하도록 만들자 (0) | 2018.06.04 |
5의 배수로 반올림하기 (0) | 2018.06.03 |