JavaScript 기초 - 코플릿

jeongjwon·2023년 2월 22일
0

SEB FE

목록 보기
8/56

📌 코플릿 회고

1. 🚨 전치연산자 vs 후치연산자

  • 전치연산자 ++i
    		let i = 0;
    		while(++i < 5) console.log(i); // 1 2 3 4
    		```
    i 를 먼저 증가시키고 새로운 값 반환하고 5와 비교할 때는 증가 이후의 값과 비교
  • 후치연산자 i++
    		let i = 0;
    		while(i++ < 5) console.log(i); // 1 2 3 4 5
    		```
    i 를 증가시키긴 하지만 기존값을 반환하고 5와 비교할 때는 4와 비교 후 마지막 값은 증가된 새로운 값으로 출력
    

2. 문자열 치환 replaceAll reaplce

replace(searchvalue, newvalue)
문자열 내 처음으로 발견된 searchvalue만 newvalue로 변경됨

=> replaceAll 과 같은 함수로 쓰이려면 정규식 이용하여야 함
/searchvalue/ : '/ /' 사이에 검색할 문자 입력
g : 전역 검색 (Global search)
i : 대/소문자 구분 무시 (Case-insensitiv search)
m : 여러 줄 검색 (Multi-line search)

3. 문자열 부분 추출(자르기) slice substr substring

substr(start, length) : start index 부터 length길이만큼 (start index ~ start index + length)
substring(start, end) slice(start, end) : start index부터 last index-1 까지

🚨 substringslice의 차이

  • 매개변수 start > end 일 경우
    substring는 start값과 end값을 바꾸어 계산하여 처리
    slice는 비어있는 문자열 ""로 리턴
  • 매개변수 start나 end 값이 음수인 경우
    substring은 음수를 0으로 취급하여 계산
    slice 는 string의 마지막 인덱스에서 음수의 절대값만큼 내려온 index로 취급하여 계산
  • 매개변수 start나 end 값이 음수이고, 음수의 절대값이 전체 string.length 보다 클 경우
    이 경우는 음수를 단순히 0으로 취급하여 계산

4. 원시자료형 vs 참조자료형

	str = 'apple';
	str[0] = 'b';
	console.log(str); // 'apple'

	str = 'banana';
	console.log(str); // 'banana'
	재할당은 가능하나 기존값을 바꿀 수는 없다

5. 소수 구하기

	function isPrime(num){
  	//소수라면 true, 소수가 아니라면 false 반환
  
  		if (num === 1) return false;
  		//1은 예외적으로 소수가 아니므로 false 반환
  
  		for(let i = 2; i < num ; i++){
    	//소수는 1과 자기 자신을 약수로 하기 때문에 
    	//1과 자기 자신을 제외한 부분의 수로 i 설정
    
    		if(num % i === 0) return false; 
    		//i로 나누어 질 경우 = i가 약수임을 증명하는 것임으로 false 반환
  		}
  
  		return true;
        //for문을 빠져나온 경우는 for문 안 if문을 거치지 않았다는 것이므로 true 반환
    }

[Advanced] 제곱근 Math.sqrt()

  1. n 이 소수가 아닐 경우, n = a*b 으로 나타낼 수 있음
  2. n 이 소수일 경우,
    a <= b 관계식으로(혹은 b >= a) a와 b의 차이가 최소로 날 때 √n √n = n 이므로 n = ab 로 나타낼 수 있음. 즉, a <= b 일 때, b의 최솟값이자 a의 최댓값이 √n !
    따라서 n이 아니라 √n 까지만 반복하면 됨!
     function isPrime(num){
       if(num === 1) return false;
       if(num % 2 === 0 ) return num === 2 ? true: false;
       //예외처리, 2는 유일한 짝수 소수이다.
       
       for(let i = 3 ; i <= parseInt(Math.sprt(num)) ; i += 2){//2는 제외되었으니 3부터 √num 까지 +2씩 하여 홀수 중 소수를 판별!
         if(num % i === 0) return false;
       }
       return true;
     }

[Advanced] 에라토스테네스의 체

1. 2의 배수는 삭제 (빨간색) -> 2는 소수 2. 3의 배수는 삭제 (초록색) -> 3은 소수 3. 5의 배수는 삭제 (파란색) -> 5는 소수 4. 7의 배수는 삭제 (노란색) -> 7은 소수 ... 이 또한 √n까지만 실시하면 됨!

0개의 댓글