FizzBuzz

Fizzbuzz 알고리즘은 나열된 숫자에서 특정 조건에 부합하는 숫자가 나타날 경우 Fizz, 또는 Buzz를 출력한다. 예를들어, 1에서 30의 수가 있을 경우 3의 배수이면 Fizz, 5의 배수이면 Buzz, 3과 5의 배수이면 PizzBuzz가 출력된다.

function num(x){

if(x%3 === 0 && x%5 === 0){

return 'PizzBuzz';

}else if(num%3 === 0){

return 'Fizz';

}else if(num%5===0){

return 'Buzz';

} }//num

console.log(num(30));

Big O

Big O 표기법은 알고리즘의 복잡도 또는 성능을 표현하기 위해 사용됩니다.

O(1)은 전달되는 값 상관없이 항상 같은 퍼포먼스를 보여주는 것을 말합니다.

예시코드를 살펴보면, 배열의 크기와 상관없이 log 함수는 항상 배열의 첫 번째와 두 번째 값을 보여 줍니다.

function log(array) {
 console.log(array[0]);
 console.log(array[1]);
}
log([1, 2, 3]);
log([1, 2, 3, 4, 5, 6]);

O(n)은 입력되는 데이터의 양에 따라 처리시간이 증가되는 것을 나타냅니다.

간단한 예로, for 구문이 있으며, 입력되는 데이터의 값에 따라 함수 종료 시간이 달라집니다.

O(n^2)은 일반적으로 중첩 반복문을 나타냅니다.


Harmless Ransom Note

두 개의 파라미터로 전달되는 문자열 중 중복되는 문자열의 유무를 파악해서 true, false로 반환합니다.

forEach() 메소드를 사용하여 배열 요소마다 한 번씩 제공한 함수를 실행합니다.

function harmlessRansomNote(noteText, magazineText) {
  var noteArr = noteText.split(' ');
  var magazineArr = magazineText.split(' ');
  var magazineObj = {};
  
  magazineArr.forEach(word => {
    if (!magazineObj[word]) magazineObj[word] = 0;
    magazineObj[word]++;
  });
  
  var noteIsPossible = true;
  noteArr.forEach(word => {
    if (magazineObj[word]) {
      magazineObj[word]--;
      if (magazineObj[word] < 0) noteIsPossible = false;
    }
    else noteIsPossible = false; 
  });
  
  return noteIsPossible;
}
 
harmlessRansomNote('', '');