12월 9일 복기

Ji Taek Lim·2020년 12월 9일
0

오늘은 반복문에 대해서 풀어보았다.

1번 부터 어려웠다. #의 위치를 찾아서 그 위치의 값을 리턴하는 것

function findTheBug(word) {
  let value = '#'
  for(let i=0; i<word.length; i++) {
    if(word[i]===value) {
      return i;
    }
  }
  return undefined;
}

3번 isOdd


function isOdd(num) {


  if (num <0) {
    num= Math.abs(num)
  }
  while(num>1) {
    num=num-2;
  }
  if(num===1) {
    return true;
  }
  else if (num===0) {
    return false;
  }
}

num가 0보다 작을때에는 절대값을 씌워준다

왜냐면 0보다 작아도 홀수 짝수 판별이 가능하기 때문이다.

17번 부터 풀어본다.

isPrime
수를 입력받아 소수(prime number)인지 여부를 리턴해야 합니다.

function isPrime(num) {
  // TODO: 여기에 코드를 작성합니다.
  for(let i=2;i<=Math.sqrt(num);i++) {
    if(num %i===0) {
      return false;
    }
  }
  return true;
}
  1. i가 1이면 1은 모두의 최소공배수이기때문에 소수(prime Number인지 확인할 수 없다.)
  2. Math.sqrt를 쓰는 이유는 Number에 루트를 씌워서 그 아래의 숫자로 나누었을시 나누어지지 않는다면 Prime Number라는 Theory이다.
    0이 나오면 소수가 아닌데 1은 무조건 나머지가 0이 되고
  1. 예를 들어서 10000이면 Math.sqrt(10000) = 100 이므로 컴퓨터의 연산의 총 횟수를 획기적으로 줄여준다.

18번을 풀어본다.

listPrimes

수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴해야 합니다.

function listPrimes(num) {
  // result = result + '-' + prime
  let newStr = '2'
  for(let i=3; i<=num; i++) {
    if(isPrime(i)) {
      newStr = newStr + '-' + i
    }
  }
  return newStr;
}
function isPrime(num) {
  // 2부터 num 반복을 시키는데  (i)
  // num % i === 0  -> 나머지가 0이면 소수가 아님
  for(let i=2; i <= Math.sqrt(num); i++) {
    if(num % i === 0) {
      // 소수가 아님
      return false;
    }
  }
  return true;
}

이거를 이중 포문으로 써서 하나로 만들어야됩니다.


function listPrimes(num) {
  // TODO: 여기에 코드를 작성합니다.
  let newStr='2';
  for(let candi=3; candi<=num; candi+=2) {
    let isPrime =true;
    let sqrt = parseInt(Math.sqrt(candi));
    for(let divider=2; divider<=sqrt ;divider++) {
      if(candi%divider===0);
      isPrime = false;
      break;
    }
    if(isPrime) newStr+=`-${candi}`;
  }
  return newStr;
}
profile
임지택입니다.

0개의 댓글