function solution(num1, num2) {
return num1 % num2;
}
말그대로 나머지를 구하는 간단한 문제다.
function solution(array) {
let sortArray = array.sort(((a,b)=> a-b));
answer = Math.floor(sortArray.length / 2)
return sortArray[answer];
}
우선 배열을 sort함수를 사용해 오름차순으로 정렬한 후,
배열의 길이를 반으로 나눈 값에서 Math.floor라는 함수를 사용해 소수점을 내림 한 후,
그 값으로 배열의 인덱스로 중앙값을 찾아냈다.
function solution(array) {
if(array.length == 1){
return array[0];
} else {
const modeObject = array.reduce((acc, cur) => {
acc.hasOwnProperty(cur) ? (acc[cur] += 1) : (acc[cur] = 1);
return acc;
}, {});
const modeKey = Object.keys(modeObject).reduce((acc, cur) =>{
if(modeObject[acc] == modeObject[cur] ){
return -1;
} else{
return modeObject[acc] > modeObject[cur] ? acc : cur;
}
});
return Number(modeKey);
}
}
위에서부터 차근히 풀이해보면
일단 입출력 세번째 항목처럼 배열의 길이가 1인것은
최빈값이 그 값이기 때문에
if문으로 배열의 길이를 확인한다.
그 후 reduce함수로 배열을 순회하면서 값들을 객체의 key로 만들고
hasOwnProperty로 같은 값이 있을때마다 += 1을 해준다.
그 후에 Obeject.keys로 modeObject에 있던 key들을 가져와 배열로 만든 후 다시 reduce로 최빈값이 여러개인지 if문을 태운다.
만약 최빈값이 여러개라면 return -1을 하고,
최빈값이 하나라면 삼항연산자로 크기를 비교해 최빈값을 구한다.
그 후 문자열로 반환되기 때문에 Number로 감싸 숫자타입으로 return 시켰다.
function solution(n) {
var answer = [];
for(i=0; i <= n; i++){
if(i % 2 == 1){
answer.push(i);
}
}
return answer;
}
반복문을 돌면서 2로 나머지를 구했을때 1이 나온다면 홀수이기 때문에,
빈배열에 홀수일때마다 push함수로 배열에 뒤쪽부터 추가하게 만들어 따로 sort를 사용하지 않으면서 반복문이 끝나면 return하도록 만들었다.