본문 바로가기

프론트앤드 수업

[코딩테스트 javascript] 짝수와홀수, 작은수제거하기, 평균구하기, 하샤드수, 핸드폰번호가리기, 행렬의덧셈 ,최대공약수 최소공배수,정수제곱근판별

728x90

1. 짝수와 홀수

function solution(num) {
    var answer = '';
    num%2 ==0 ? answer = 'Even': answer = "Odd"
    return answer;
}

2. 작은수 제거하기

   function solution(arr) {
                var answer = arr;
        let i = Math.min(...answer) // 작은수 값 탐색
       let a = answer.indexOf(i) // 작은수 index위치 탐색
     answer.splice(a,1) // 작은수 제거
    return answer.length===0 ? [-1] : answer; // 빈배열이거나 10만들어있을시 -1 리턴
}

3. 최대공약수, 최소공배수

 function solution(n,m){
            let answer = [];
            // 최대공약수 구하기
            // 두수중 작은수만큼 반복하기
            // 두수를 1부터 작은수까지 나머지 연산을 했을때
            // 둘다 0이 되는 가장 큰수
            for(let i=1; i<=Math.min(m,n); i++){
                if(n % i == 0 && m % i == 0){
                    answer[0] = i
                }
            }
            // 최소공배수 구하기
            // n으로 나누었을때 나머지가 0이되고,
            // m으로 나누었을때 나머지가 0이되는 수중
            // 가장 작은수
            let lcm = 1;
            while(true){
                if(lcm%n===0 && lcm%m===0){
                    break;
                }
                lcm++;
            }
            answer[1] = lcm
            return answer;
        }

4. 콜라츠 추측

 function solution(num) {
        var answer = 0;
        let i = 0;
        if(num==1){         // 나머지가 1이되면 종료한다.
                answer = 1;
                return answer;
        }
        while(true){
            if(num%2 == 0){         // 짝수라면 2로 나눈다.
                num = num/2
                i++;
            }else { num = (num*3+1);         // 홀수라면 3을 곱하고 1을 더한다
            i++;
                num = num/2;
                i++;
        }
            if(num==1){
                answer = i;
                return answer;
            }
            if(i==500){answer=-1; return answer;}         // 반복횟수가 500회가 되면 -1을 리턴한다.
        }
        }  

5.평균구하기

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

6. 하샤드수

 function solution(x){
            let answer = true;// 문자열을 형변환 -> 배열로 변환 [1,0] [1,2]
            let sum = String(x).split("").reduce((pre,cur)=>{  // 배열의 합을 구하기(reduce) 초기값 0으로.  
                 return Number(pre)+Number(cur);
            },0);
            answer = x%sum==0 ? true : false;
            return answer;// 합을 그대로 나눳을때 나머지가 0 이면 true 아니면 false를 리턴
        }

7. 핸드폰번호 *로 바꾸기

function solution(phone_number){
            let answer ='';
            for(let i=0; i<phone_number.length; i++){ // 폰넘버의 길이만큼 반복
                answer += i<phone_number.length-4 ? "*" : phone_number.charAt(i); // 마지막 4개를 제외한 번호에 *을 삽입
            }
            return answer;
        }

8. 행렬의 덧셈

 function solution(arr1,arr2){
            let answer = [];
            // 배열을 돌면서 값을 더한 결과를 answer배열에 삽입
            arr1.forEach((row,rowIndex)=>{
                answer.push(row.map((col,colIndex)=>col+arr2[rowIndex][colIndex]));
            })
            return answer;
        }

9. x간격만큼 있는 n개의 숫자

  function solution(x,y){
            let answer = [];
            for(let i=1; i<=y; i++){
                answer.push(x*i);
            }
            return answer;
        }

10. 정수제곱근 판별

function solution(n){
            let answer = 0;
            // 어떤수의 제곱근을 구한다.
            // 구한 제곱근이 정수면 값+1 의 제곱을 리턴
            // 구한 제곱근이 정수가 아니면 -1을 리턴
            answer = Math.sqrt(n)%1 ==0 ? (Math.sqrt(n)+1)**2 : -1;
            return answer;
        }
728x90
댓글