Dev-dotoli TIL

algo 4



Sparta coding



Innovation Camp



  • 24 내림차순으로 배치하기

    function solution(n) {
      //    var answer = 0;
      let a = Array.from(`${n}`);
      a.sort(function (a, b) {
        return b - a;
      });
      return 1 * a.join("");
    }
    
    // 쪼갠다음에from? split? 내림차순정렬sort - 다시 join
    
    // 쪼갤때 toString / .from / `${}` templete literal쓰면 편함
    // .sort(내림차순)으로 정리하고
    // .join()으로 합 > 1을 곱해서 int (JS특징
    


  • 25 정수 제곱근 판별 / 다시

    function solution(n) {
      let answer = 0;
      let x = Math.sqrt(n);
    
      answer = n === x * x ? (x + 1) * (x + 1) : -1;
    
      return answer;
    }
    // n이 x의 3제곱인지 판단
    // true = x+1 / false = -1 return
    
    // n === x*x*x ? true= x+1 : false= -1
    // issue
    // 어? x는 주어지는 변수가 아님
    


  • 26 제일 작은 수 제거하기

    function solution(arr) {
      let answer = [];
      arr.sort(function (a, b) {
        a - b;
      });
      // console.log(arr)
      arr.pop();
      // console.log(arr)
      if (arr.length === 0) {
        answer[0] = -1;
        console.log(answer);
      } else {
        answer = arr;
      }
      return answer;
    }
    
    // arr=[]
    // element중 가장 작은 수 제거후 return
    // 빈배열 : -1 return
    
    // arr.sort(내림차순) 정렬
    // 마지막 수 제거 후 return
    // or 오름차순 후 첫번째 제거
    
    // 실패하는데 이유 모르겠음
    


  • 27 콜라스 추측 / 시간초과 다시

    function solution(num) {
      let answer = 0;
      // let count = 0
    
      while (num !== 1) {
        num % 2 === 0 ? num / 2 : num * 3 + 1;
        // count++
        answer++;
      }
    
      if (count > 500) {
        // if를 for문 안에 넣어 /indent error
        return -1;
      }
      if (num == 1) {
        // else if
        return 0;
      } else {
        return answer;
      }
    
      // console.log(num,count)
      // answer = count
      return answer;
    }
    
    // %2=0 : /2
    // %2!=0 : *3+1
    // n%2 == 0 ? n/2 : n*3+1
    // 1이 될 때까지 반복 후 반복횟수 return
    // max 500 후 -1 return
    // num 1이면 0 return
    
    // let a = n%2 == 0 ? n/2 : n*3+1
    // a반복횟수 count how?
    // while문?
    // while(a === 1) {
    //     n%2==0 ? n/2 : n*3+1
    // }
    
    // while 횟수를 모르지만 확실히 언제 끝나는지는 알 때
    


  • 28 하샤드 수

    function solution(x) {
      let answer = true;
      let a = "";
      let b = 0;
    
      a = `${x}`;
      // console.log(a[0],a[1])
    
      for (let i in a) {
        b += 1 * a[i];
        // console.log(b)
      }
      // console.log(x/b)
      answer = x % b === 0 ? true : false;
      return answer;
    }
    
    // // x to String / 자리수별 분리 / to Int / +=
    // // x % (x의 각 자릿수 합) = 0 ? true(하샤드 수) : false