제목의 숫자는 데일리코딩을 시작한 날짜를 카운트하는 것으로 바꿈
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한사항
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
function solution(arr) {
let answer = 0;
for (let el of arr) {
answer += el
}
answer /= arr.length
return answer;
}
가장 먼저 떠오른게 for문을 이용하는 거였는데, 생각해보니까 reduce()
를 이용하면 더 쉽게(간단하게) 해결할 수 있는 문제였다!!
function solution(arr) {
let sum = arr.reduce((acc, cur) => {
return acc + cur
}, 0)
return sum / arr.length
}
arr.reduce(callback[, initialValue])
배열의 각 요소에 대해 주어진 리듀서(reducer - 콜백함수)를 실행하고, 하나의 결과값을 반환한다.
리듀서는 네가지 인자를 가진다
누산기 (accmulator) - 콜백함수의 반환값을 누적한다.
현재 값 (currentValue) - 현재 처리할 요소
현재 인덱스 (currentIndex) (optional)
원본 배열 (array) (optional)
초기값(initialValue)은 처음 콜백함수를 호출할때 accumulator에 제공하는 값이다. 초기값이 없으면 배열의 첫번째 요소를 사용하고, 초기값이 있으면 주어진 초기값을 사용한다.
초기값이 없을때:
TypeError
오류가 발생한다. 문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
slice(-4)
slice(0, str.length-4)
[...str]
, Array.from(str)
, str.split('')
map(x => '*')
+
, concat()
, join('')
function solution(phone_number) {
let firstNum = phone_number.slice(0, phone_number.length-4);
let firstNumArr = [...firstNum].map(x=>'*');
firstNum = firstNumArr.join('');
let result = firstNum + phone_number.slice(-4);
return result;
}
수도코드 작성할 때부터 간단한 문제같은데 이걸 이렇게 어렵게 푸는게 맞나?(이 방법이 맞나?) 싶어서 현타가 왔지만 그래도 포기하지 않고 일단 코드를 완성했다...(효율적인 코드같지 않지만,, 지난주부터 공부한 것들을 복습하면서 써먹어볼 수 있었던 것에 의의를 둔다!) 다른 분들 풀이를 보니까 *
를 글자 길이만큼 변환한다는 컨셉으로 풀었던데, 그렇게 하면 훨씬 간단할 것 같아서 바꿔봤다.
변환하는 부분을 변수로 선언하고, 변환해야 하는 문자열 길이(전체 문자열 길이 -4)만큼 반복하면서 *
를 해당 변수에 하나씩 더해줬다.
function solution(phone_number) {
let firstNum ='';
for (let i = 0; i < phone_number.length-4; i++) {
firstNum += '*';
}
let result = firstNum + phone_number.slice(-4);
return result;
}
다른 분들 풀이를 보고 repeat()
메서드를 알게돼서 검색해보고 써먹어봤다.
function solution(phone_number) {
let firstNum = "*".repeat(phone_number.length-4);
let result = firstNum + phone_number.slice(-4);
return result;
}
str.repeat(count)