Day3 Coding Test

ming·2022년 11월 15일
0
post-thumbnail

1.나머지 구하기

function solution(num1, num2) {
    return num1 % num2;
}

말그대로 나머지를 구하는 간단한 문제다.

2.중앙값 구하기

function solution(array) {
    let sortArray = array.sort(((a,b)=> a-b));
    answer = Math.floor(sortArray.length / 2)
    return sortArray[answer];
}

우선 배열을 sort함수를 사용해 오름차순으로 정렬한 후,
배열의 길이를 반으로 나눈 값에서 Math.floor라는 함수를 사용해 소수점을 내림 한 후,
그 값으로 배열의 인덱스로 중앙값을 찾아냈다.

3.최빈값 구하기

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하도록 만들었다.

profile
프론트엔드 개발자 공부중

0개의 댓글