23/11/15 til 알고리즘(1)

2023. 11. 16. 00:53카테고리 없음

function solution(num) {
    var answer = '';
     if(num%2===0){
       return 'Even'
    }else{
        return 'Odd'
    };
}

정수가 짝수일 경우 이븐을 반환 하고 홀수 일 경우 오드를 반환한다.

짝수는 2로 나눈 나머지가 0이므로 이프문을통해 트루값을 갖으면 이븐이 되게한다.

 

function solution(num) {
    var answer = '';
     (num%2===0)?  return 'Even' :  return 'Odd'
   
삼항 연산자를 이용하면 더 간결하다.

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(arr) {
    var answer = 0;
    let sum =0;
    for(let i in arr){
      sum+=arr[i]  
    };
    return sum/arr.length
}

주어진 배열안에 요소들의 평균값을 구하는 예제이다.

포문 바깥에 재할당 가능한 렛으로 썸을 0으로 할당해놓는다.

포인문을통해 배열안 모든 요소를 더한후 배열의 길이만큼으로 나누어

평균값을 구한다.

 

function average(array){
  return array.reduce((a,b) => a+b) / array.length;
}

다른사람의 풀이 a는 축적된 값 b는 요소의 새로운 값이다. a와 b를 더한게 새로운 a가 되어서 그합을 

길이로 나눈다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(n)
{
    var answer = 0;
const newN = String(n);
let sum = 0;
for(let i =0 ; i < newN.length ; i++){
    sum += Number(newN[i])     
}     
    return sum;
}

숫자의 각자릿수들의 합을 구하는 문제

주어지는게 넘버이므로 스트링화 그것을 뉴엔에 할당 한다. sum을 렛으로 선언하고 

뉴엔이라는 스트링의 길이만큼 포문을 돌려서 해당스트링의 각자리에 해당하는 요소를

숫자화해서 sum에 계속 더해준다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(n) {
    var answer = 0;
    let sum=0;
  for (let i=1 ; i<=n ; i++){
     if(n%i === 0){
         sum+=i
     }
  }
      return sum;
}

n의 약수들의 합을 구하는 문제

약수들은 해당숫자를 나눴을때 나머지가 0이다.

1부터 n까지 포문을 돌린다. 그 숫자들이 n을 나눴을때 나머지가 0이면 약수이므로 

sum에 더해준다. sum은 약수들의 합이된다.

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(n) {
    var answer = 0;
    let h = 0;
    for(let i=0 ; i<n ; i++){
        if(n%i===1){
            h = i
           return h;
        }        
   }   
}

n을 x로 나눈 나머지가 1이 되도록하는 가장 작은 자연수 구하기

포문을 0부터 n미만까지 돌린다. n을 i로 나눴을 때 1이 되는거조건문이

트루이면 그때의 i를 리턴 작은수부터 포문이 돌고 리턴을 받는순간

포문이 멈추므로 가장 작은수 이다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

정수 x부터 시작해서 x씩 증가하는 n개의 숫자의 배열구하기

앤써를 빈객체로 var로 선언 포문은 1부터 n까지 돌게 설정

x에 1부터 n까지 차례대로 곱한것을 빈 앤써 배열에 넣어주면 완성

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(n) {
    var answer = [];
    let N = String(n)
    for(let i = 0 ; i<N.length ; i++){
       answer.unshift(+N[i])         
    };    
    return answer;
}

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태 만들기

일단 n을 문자화 시키기고  빈배열에 그 문자열을 첫번째 요소부터 차례대로

언쒸프트 매써드를 통해 앞쪽으로 채워 나간다. N앞에 플러스는 문자열이니까

넣어주면서 넘버화 시킨것

return n.toString().split('').reverse().map(o => o = parseInt(o))

이렇게 하면 너무 깔끔함 n을 투스트링으로 문자화 스플릿으로 문자열을 한글자씩 쪼갠 배열을 만들어서

리버스로 거꾸로 배열을 만들고 그걸 다시 맵함수로 하나하나 정수화시킴

캬~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(s) {
    var answer = 0;
    return +s;
}

문자열s를 숫자로 변환한 한것을 리턴

걍 s앞 에 플러스 붙이면 숫자화 한다. 문자는 숫자와 의 사칙연산은 숫자가 되기때문?

 

저걸그냥 s/1한 사람있음 초 깔끔

Number(s) , parseInt(s)해도 될듯

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(n) {
    var answer = 0;
    for(let i=0 ; i<=n ; i++){
        if (n===i**2){
            answer=(i+1)**2
            break;
        }
        if(i===n){
            answer= -1}
    }
    return answer;
}

정수n 어떤 양수 x의 제곱이면 x+1의 제곱을 반환하고 아니면 -1반환

포문을 0부터 n까지 돌림 1부터 돌려도 됐을텐데 

조건문에서 n이 i의 제곱과 같다면 i+1의 제곱을 리턴 근데 저식은 브레이크를 걸어줌

그냥 브레이크 대신 저기서 바로 앤서 리턴했어도 됐을텐데 

i가 n과 같아질때까지 포문이 돌았다는것을 못찾았다는 거니까 -1을 리턴하게 했다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function solution(n) {
    var answer = 0;
   let arr = String(n).split('').sort((a,b)=>b-a)
   console.log(arr)
   answer = Number(arr.join(''));
    
    
    return answer;
}

정수 n의 각자릿수를 큰수부터 작은순으로 정렬한 새로운 정수 만들기 

정수 n을 스트링을 통해 문자열 만들고 각자리수로 쪼갠 배열을 스플릿을 통해 만들고

그것을 sort함수를 통해 큰수부터 배열 그것을 arr에 할당하고

할당한 arr의 각요소를 다 합친 문자로 만들기 위해 조인을 사용하고 그것을 넘버링화한다.

sort((a,b)=>b-a)를 sort().reverse() 하는게 더 이쁠듯

 

여기서 새로운 거 배웠는데 n+''이게 n을 문자열로 바꾸는 거란다 신기