본문 바로가기

코드스테이츠 SEB FE 41기/Section 별 내용 정리

section1/unit3/javascript 기초(8/23)

반응형

블로깅 주제

  • 반복문

1. 지금 현재, 당신의 기분이나 느낌을 표현해 주세요.

  • 아침에 일어나기가 매우 힘들었다,,^^ 왜 아직도 수요일인거지? 금요일까지 열심히해서 이번주가 끝날 때 열심히 살았다는 뿌듯함을 느끼고싶다. 
  • 오늘 코플릿에서 소수문제가 나오자마자 멘붕이 왔다 ㅠㅠ 일단 소수를 구하는 알고리즘 자체가 익숙하지 않은 것 같다,, 그래도 페어분이랑 끝까지 붙들고 이해하려고 노력했다 ㅎㅎ 페어분도 열정적으로 임해주셔서 나도 더 빠져서 공부할 수 있었던 것 같다! 백준문제를 하루에 2문제씩 한다고 해놓고,,한문제 푸는 것도 허덕이고 있다ㅠㅠ 6시 이후에 저녁 먹고 바로 복습하고 블로깅하기 바빠서 알고리즘에 더 시간을 못 쏟는 것 같다 ->핑계^^ 그냥 블로깅까지 전부 끝내고 나면 허리도 너무 뻐근하고 머리도 너무 많이 써서 지친 상태가 되어버린다,, 그래도 열심히 하루를 산게 어디냐고 생각하며 스스로를 위로해주려고 한다^^

2. 오늘 무엇을 학습한 내용 중 지금 떠올릴 수 있는 단어를 모두 나열해 주세요.

  • 반복문, for, while,소수판별,str.replace(),str.slice(),parseInt,이중 for문

3. 2에서 작성한 단어를 가지고, 오늘의 학습 내용을 설명해 보세요.

- for

반복할 조건을 초기화, 조건식, 증감문 순으로 넣어준다.

for(let n;n<10;n++){}

- while

반복할 조건 중 초기화, 증감문은 따로, 조건식만 괄호 안에 넣어준다.

let sum = 1;
let n = 2;

while(n <= 4) {
sum = sum + n;
n = n + 1;
}

- parseInt() vs Number()

  • parseInt()-> 정수 뽑아냄
  • Number()-> 정수 그대로 반환
let test = '2022년도'; 
parseInt(test); // 2022 (정수가 앞에 있어야만 인식됨)
Number(test); // NaN

-str.replace()

str.replace(바꿔질 문자,바꿀문자)

-소수 판별

소수란 1보다 큰 자연수 중 1과 자기자신만을 약수로 가지는 수

  1. num이 1이면 소수가 아니다
  2. 짝수는 소수가 아니다(2 제외)
  3. num보다 작은 수 중에 num을 나눠서 떨어지는 수가 하나라도 있으면 소수가 아니다

+ 제곱근을 쓰는 이유 = 효율성 /  소수판별은 num의 제곱근(중간 값)까지만 검사해봐도 충분함

//제곱근 사용
function isPrime(num) {
  
  if (num === 1) {
    return false;
  }
  if (num === 2) {
    return true;
  }
  for (let i = 2; i <= Math.sqrt(num); i++) {
    if (num % i === 0) {
      return false;
    }
  }
  return true;
}

//미리 짝수를 걸러줘도 됨

function isPrime(num) {
  let sqrt = parseInt(Math.sqrt(num));

  if (num === 1) {
    return false;
  }

  if (num === 2) {
    return true;
  }

  if (num % 2 === 0) {
    return false;
  }

  for (let i = 3; i <= sqrt; i += 2) { // 홀수만 검사해줘도 되기때문에 i+=2
    if (num % i === 0) {
      return false;
    }
  }

  return true;
}

- 2 이상의 자연수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴하기

  1. 2는 이미 소수인 것을 알기 때문에 '2'를 할당한 변수 선언
  2. 첫번째 반복문은 3부터 num까지 수를 모두 탐색, 홀수만 판단
  3. 두번째 반복문은 소수 판별
function listPrimes(num) {
  let listPrime='2';//2는 무조건 소수니까 처음부터 포함
  for(i=3;i<=num;i+=2){//범위, 홀수만 봄
    let range=i;
    let isPrime=true;
    for(n=3;n<=Math.sqrt(range);n+=2){//기능
      if(range%n===0){
        isPrime=false;
        break;
      }
    }
    if(isPrime){
      listPrime=`${listPrime}-${range}`;
    }
  }
  return listPrime;
}

 

반응형