오늘은 코플릿 문제를 풀면서 새로 알게된 개념들을 정리해보는 시간을 가지려 한다.
a*a*a // =3a
x*x // =2x
3**3 // =27
2**5 // =32
Math.pow(4,2) // =16
Math.pow(5,3) // =125
Math.pow는 Math 객체의 Method들 중 하나인데 코플릿을 풀면서 사용한 다른 Method를 정리해본다.
function difference(a, b) {
return Math.abs(a - b);
}
console.log(difference(3, 5)); // expected output: 2
console.log(difference(1.234, 7.890)); // expected output: 6.656
Math.floor( 21.88); // 21
Math.floor(-35.88); // -35
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN
str 객체 Method들도 사용했는데 그중 str.slice와 str.substring의 차이에 대해 궁금했다.
let str = "사랑합니다!"
console.log(str.slice(0, 3)); // expected output: "사랑합"
console.log(str.substring(0, 3)); // expected output: "사랑합"
그럼 차이점은??
let str = "사랑합니다!"
console.log(str.slice(-3, 5)); // =str.slice(3, 5)
console.log(str.slice(0, -2)); // =str.slice(0, 4)
let str1 = "12345";
let str2 = "바보";
console.log(parseInt(str1)); // = 12345
console.log(parseFloat(str1)); // = 12345
console.log(parseInt(str2)); // = NaN
console.log(parseFloat(stR2)); // = NaN
num를 입력 받아서 홀수 여부를 boolean 으로 return하는 문제
실행문 이외에도 return이 어디에 들어가야하는지 항상 고민해볼것!
while ( 0 <= num ) {
//num = num - 2
// 처음에 실행문을 여기다 놓앗더니 num=0, num=1일때 결과값이 undefined
// 여기다 놓을 경우 num=0/num=1 이면 ouput이 num=-2/num=-1이기 때문.
// 실행문은 while문에 속하기 때문에 if문과는 상관이 없을거라고 생각함.
if ( num === 0) {
return false;
} else if (num === 1) {
return true;
}
num = num - 2
// 실행문이 있어야 할 자리는 여기! while문 안에 있으면서 if문이 끝나고 난후 실행이 되도록!!
}
자연수 num을 받아 소수(prime number)인지 여부를 boolean으로 return하는 문제
코드를 간단하게 짜기 위해 조건들을 하나씩 배제해야 한다는 걸 느낀 문제.
if ( num === 1) { // 1은 소수가 아니니깐~
return false;
}
if ( num === 2) { // 2 이외에는 소수에 짝수는 없기때문에 따로 빼주고.
return true;
}
if ( num % 2 ===0 ) { // 짝수는 모두 배제하기 위해 써준것.
return false;
}
for (let n = 3 ; n < num; n=n+2 ) {// 홀수만 판별하기 위해서 n=3 부터, n은 +2씩 !
if (num % n === 0) { // 소수는 1과 자기자신 이외에 약수가 없기 때문에 만든 조건.
return false;
}
}
return true;
1 이상의 자연수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴
이중 반복문, break에 대해 배울 수 있었던 문제.
밑의 코드가 어떻게 돌아가는지 메커니즘을 이해하는게 가장 중요하다고 생각했다.
function listPrimes(num) {
let result = '2'; // 최초 result가 2이므로 (이해됨)
for ( let n = 3 ; n <=num ; n=n+2) { // 소수로 판별되어 질 변수 n
let primeNum = true;//우선 홀수면 primeNum = true라 하고 다음 for문으로 넘김
//다음 for문에서 if (n % m === 0 ) 이 조건으로 false인지를 판별하는거지!!
for( let m = 2; m < n; m++){ // 소수로 판별하기위해 n을 나눌 변수 m
if (n % m === 0 ) { // 그래서 n/m 했을때 나머지가 0이면 소수가 아니니깐
primeNum = false; // primeNum 이 false가 되는거고
break; // break에 의해 loop가 stop. 모든 loop를 멈추는게 아닌 j만 멈춤.
} // i는 loop는 계속 돌아가는거야!
}
if (primeNum) {
result = result + `-${n}` //그래서 break가 실행되지 않은 n은 primeNum = true;
//에 의해 result에 추가되는거고
}
}
return result; // n<=num 조건에 맞는 n까지 다 수행된 result가 return 되게 되는거지.
}
이외에도 반복문에는 어려운 문제가 많앗으니 꾸준히 복습하도록 하자.