이안의 평일코딩

[JS] 기초 (1) - 최솟값, 삼각형, 개수, 합, 홀수, 10부제, 일곱난쟁이 본문

Study/JS Algorithm Rocket

[JS] 기초 (1) - 최솟값, 삼각형, 개수, 합, 홀수, 10부제, 일곱난쟁이

이안92 2021. 5. 17. 11:18
반응형

최솟값
<script>
  function solution(a, b, c){
    let answer;
    if(a<b){
      answer=a;
    }
    else{
      answer=b;
    }
    if(c<answer){
      answer=c;
    }
    return answer;
  }
console.log(solution(11, 5, 1));
</script>

 

삼각형 판별

 

만약 c가 max라면 a+b>max여야 삼각형 조건이 성립된다.

<script>
  function solution(a, b, c){
    let answer="YES", max;
    let sum=a+b+c;
    if(a>b) max=a;
    else max=b;
    if(c>max) max=c;
    if((sum-max)<=max) answer="NO"; 
    return answer;
  }
  console.log(solution(13, 33, 17));
</script>

 

연필 다스 수 (12개당 1다스)

 

Math.ceil, Math.floor

<script>
  function solution(n){
    let answer = Math.ceil(n/12);
    // Math.ceil 올림, Math.floor 내림, Math.round 반올림, Math.sqrt 제곱근
    return answer;
  }
  console.log(solution(178));
</script>

 

1부터 N까지의 합
<script>
  function solution(n){
    let answer=0;
    for(let i=1; i<=n; i++){
      answer+=i;
    }
    return answer;
  }
  console.log(solution(10));
</script>

 

최솟값 구하기
 <script>
   function solution(arr){
     let answer, min=Number.MAX_SAFE_INTEGER; // 가장 안전한 큰 정수 9007199254740991
     // min=arr[0]; 으로 주고 i를 1부터 시작해도 된다
      for(let i=0; i<arr.length; i++){
        if(arr[i]<min) min=arr[i];
      }
      answer=min;

     // let answer=Math.min(...arr) => 배열은 안되며(NaN) 인자를 넣어야함
     // ...arr => arr[0], arr[1], .... arr[6]
     // 최대값은 Math.max(...arr)
     // ...arr 전개연산자 대신 쓰는 방법 => Math.min.apply(null, arr);
     // 2번째 인자에 배열을 넘김, this에다가 컨트롤할 수 있는 객체의 이름을 넣음
     return answer;
  }
  let arr=[5, 7, 1, 3, 2, 9, 11];
  console.log(solution(arr));
</script>

 

홀수

 

x%2!=0

https://iancoding.tistory.com/226

 

[JavaScript] 배열(Array)의 unshift(), push(), shift(), pop()

배열에 값 추가 .unshift() 배열의 맨 앞값 추가 .push() 배열의 맨 뒷값 추가 var fruits = ["Apple", "Banana", "Orange", "Strawberry"]; var unshift = fruits.unshift("Grape"); console.log(fruits); //"Gr..

iancoding.tistory.com

<script>
  function solution(arr){
    let answer=[];
    let sum=0, min=Number.MAX_SAFE_INTEGER;
    for(let x of arr){
      if(x%2!=0){
        sum+=x;
        if(x<min) min=x;
      }
    }
    answer.push(sum);
    answer.push(min);
    return answer;
  }
  arr=[12, 77, 38, 41, 53, 92, 85];
  console.log(solution(arr));
</script>

 

10부제

 

x%10==day

<script>
  function solution(day, arr){
    let answer=0;
    for(let x of arr){
      if(x%10==day) // 어떤 숫자든지 10으로 나눈 나머지는 1의 자리가 된다.
      answer++;
    }
    return answer;
  }
  arr=[25, 23, 11, 47, 53, 17, 33];
  console.log(solution(3, arr));
</script>

 

일곱난쟁이

 

배열.reduce 누적 계산의 결과 값

배열.splice(2, 1); 2번인덱스에 하나 삭제 (삭제 또는 교체 메서드)

<script>
  function solution(arr){
    let answer=arr;
    let sum=arr.reduce((a,b)=>a+b, 0); // => 결과, 초기값
    for(let i=0; i<arr.length; i++){
      for(let j=1; j<arr.length+1; j++){
        if((sum-(arr[i]+arr[j]))===100){
          arr.splice(j, 1); // 뒤에서 먼저 하나 삭제 (순서를 위해)
          arr.splice(i, 1); // 그리고 나머지 하나 삭제
        }
      }
    }
    return answer;
  }
  let arr=[20, 7, 23, 19, 10, 15, 25, 8, 13];
  console.log(solution(arr));
</script>
반응형
Comments