๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test

[์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ] : ๋ฐฐ์—ด์˜ ํ‰๊ท ๊ฐ’

by ๊ถŒ์Šพํ–„ 2023. 8. 1.

 

๋ฌธ์ œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐฐ์—ด์˜ ํ‰๊ท ๊ฐ’ ๋ฌธ์ œ ํ’€์ด

 

ํ’€์ด ๊ณ ๋ฏผ

์šฐ์„  solution์˜ ํ•จ์ˆ˜๊ฐ€ ๋ฐ›๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด "๋ฐฐ์—ด"์ด๋‹ˆ.. ๋ฐฐ์—ดํ•˜๋ฉด ๋ฐ˜๋ณต์ธ๋ฐ, ๋งŒ์•ฝ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค ํ•˜๋ฉด ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋Œ์•„๊ฐ€๋ฉด์„œ ์ „๋ถ€ ๋”ํ•˜๊ณ ๋‚˜์„œ ๋ฐ›์€ ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ธธ์ด๋กœ ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด ๋˜๊ฒ ๋Š”๋ฐ???

์ด๊ฑฐ๋‹ค ์‹ถ์–ด ๋ฐ”๋กœ ์ฝ”๋”ฉ ๋Œ์ž… !!

 

์ œ์ถœ ์ฝ”๋“œ

๋“ค์–ด์˜จ arr ๋ผ๋Š” ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ , ํ•ด๋‹น ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ i๋ผ๋Š” for ๋ฌธ ์•ˆ์˜ ์กฐ๊ฑด๋ณ€์ˆ˜๋ฅผ arr์˜ index์š”์†Œ์— ๋น„์œ ํ•˜๊ณ , ๋ฐฐ์—ด์˜ index์˜ ์ดˆ๊ธฐ๊ฐ’์ธ 0๋ฒˆ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ์กฐ๊ฑด์„ ์žก๊ณ  ํ•œ ๋ฒˆ ๋Œ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ฆ๊ฐ์„ ๋‚˜ํƒ€๋ƒˆ๋‹ค.

answer๋ผ๋Š” ์‹๋ณ„์ž์— ํ•ด๋‹น arr์˜ i๋ฒˆ ์š”์†Œ์˜ ๊ฐ’์„ ๋”ํ•˜๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์ €์žฅํ•˜๊ณ  return ๊ฐ’์œผ๋กœ for๋ฌธ์„ ๋Œ๊ณ ๋‚˜์˜จ ๋ชจ๋“  arr์˜ ์š”์†Œ๊ฐ’์ด ๋”ํ•ด์ง„ answer๋ผ๋Š” ์‹๋ณ„์ž์— ํ•ด๋‹น ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด์„œ ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋กœ์ง์„ ๋งˆ์ณค๋‹ค.

function solution(arr) {
    var answer = 0;
    for (i = 0; i < arr.length; i++) {
        answer += arr[i];
    }
    return answer / arr.length;
}
let arr = [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99];
console.log(solution(arr));

 

์ œ์ถœ ํ›„

์ œ์ถœํ•˜๊ณ  ๋‚˜๋‹ˆ ์˜ค๋žœ๋งŒ์— forEach๋„ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ฐ™์€ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ ๋˜ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค.

function solution(arr) {
    var answer = 0;
    arr.forEach((i) => {
        answer += i;
    });
    return answer / arr.length;
}
let arr = [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99];
console.log(solution(arr));

 

๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ

๋‹ค๋“ค ๋น„์Šทํ•œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋ณด์ด๋Š”๊ฒƒ ๊ฐ™์œผ๋‚˜ reduce ๋ฉ”์„œ๋“œ๊ฐ€ ์˜ค๋Š˜ ์ฐธ ๋งŽ์ด ๋ณด์—ฌ์„œ ์ด ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™”๋‹ค.

function solution(numbers) {
    var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
    return answer;
}

์ธ์ž๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ฐ›๊ณ  ๊ทธ ์ฝœ๋ฐฑํ•จ์ˆ˜์—๋Š” 4๊ฐœ์˜ ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ๋‹ค๊ณ  ํ•˜๋„ค์š”.

์œ„ ์ฝ”๋“œ์—์„œ a๋Š” ํ˜„์žฌ๊นŒ์ง€์˜ ๋ˆ„์ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ๊ฐ™๊ณ , b๋Š” ํ˜„์žฌ ์š”์†Œ์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๊ฑธ reduce ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋ถ€๋ถ„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„ฃ์–ด์ฃผ๋ฉด์„œ ๋ฉ”์ธ๋กœ์ง์—์„œ๋Š” ๋ˆ„์ ๊ฐ’๊ณผ ํ˜„์žฌ์š”์†Œ์˜ ๊ฐ’์„ ๋”ํ•ด์ฃผ์—ˆ๊ณ , 0 ์€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ ๋”ํ•œ ๊ฐ’์„ solutionํ•จ์ˆ˜์˜ ์ธ์ž์ธ ๋“ค์–ด์˜จ ๋ฐฐ์—ด์˜ ์ด ๊ธธ์ด๋กœ ๋‚˜๋ˆ„์–ด์ค€ ํ›„ ๋ฆฌํ„ด์‹œ์ผฐ๋„ค์š”.

์•„, 0์€ ์ฐพ์•„๋ณด๋‹ˆ initialValue๋กœ reduce ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ์‹œ "์„ ํƒ์‚ฌํ•ญ"์— ์†ํ•˜๋ฉฐ, ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœ์‹œ์— ๋ˆ„์ ๊ฐ’์ธ a์˜ ์ดˆ๊ธฐ๊ฐ’์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ์—๋Š” a์—๋Š” 0์ธ๊ฐ’์œผ๋กœ ์ง„ํ–‰์ด ๋˜์—ˆ๊ณ  ์ „์ฒด๋ฅผ ๋‹ค ๋Œ๊ณ  ๋‚œ ๊ฐ’์„ answer๋ผ๋Š” ์‹๋ณ„์ž์— ํ• ๋‹น ํ›„์— ๊ทธ ๊ฐ’์„ return ํ•˜๋ฉด์„œ ๊น”๋”ํ•˜๊ฒŒ ์ฝ”๋“œ๊ฐ€ ์ •๋ฆฌ๋œ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

reduce๋Š” ๋ฐฐ์—ด์— ๊ด€ํ•œ ๋ฉ”์„œ๋“œ์ด๊ณ , ๋ฐฐ์—ด์˜ ์ถ•์•ฝ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๋‹ค๊ณ  ํ•˜๋‹ˆ ๋‹ค์Œ์—๋Š” ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์ถ•์•ฝ์‹œํ‚ฌ ๋•Œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค !!

ํ™•์‹คํžˆ ์ฝ”ํ…Œ๋ฅผ ๊ฒช์œผ๋ฉด์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์ด ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์‹œ๋Š”์ง€ ์ œ ์ฝ”๋“œ์™€ ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ทธ๊ฒŒ ๋„ˆ๋ฌด ์ข‹์€๊ฒƒ ๊ฐ™์•„์š”.

 

reduce ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‚ด๊ฐ€ ๋‹ค์‹œ ์งœ ๋ณธ ์ฝ”๋“œ

function solution(arr) {
    var answer =
        arr.reduce((acc, cur) => {
            return acc + cur;
        }, 0) / arr.length;
    return answer;
}

let arr = [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99];
console.log(solution(arr));

๋ !

 

 

#์ฝ”๋”ฉํ…Œ์ŠคํŠธ #๋ฐฐ์—ด์˜_ํ‰๊ท ๊ฐ’ #ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค #์ฝœ๋ฐฑํ•จ์ˆ˜ #reduce #๋ฐ˜๋ณต๋ฌธ #for #forEach #์ฝ”๋“œ๋น„๊ต