본문 바로가기
공부/javascript

2022.04.26 - javascript 퀴즈 (3)

by 기묜몬 2022. 4. 28.

3. < 가장 작은 수 >

  숫자 요소로 이루어진 배열이 인자로 주어졌을 때, 다음과 같은 조건을 만족하는 함수를 작성해 주세요!

  📌 각 배열의 숫자 중 가장 작은 숫자를 반환해야 합니다.
  📌 배열 내의 숫자가 중복되는 경우는 없습니다.
  📌 빈 배열이 주어질 경우는 고려하지 않아도 됩니다.


  +--------------------------------------------------------------------+
  |                arr                   |            리턴 값            |
  +--------------------------------------------------------------------+  
  |           [5, 4, 3, 2, 1]            |              1              |
  +--------------------------------------------------------------------+                   
  |           [4, 5, 1, 2, 3]            |              1              |
  +--------------------------------------------------------------------+  
  |          [10, 7, 13, 2, 6]           |              2              |
  +--------------------------------------------------------------------+

*/

const arr1 = [10];
const arr2 = [4, 10, 1, 5];
const arr3 = [13, 5, 7, 3, 10, 9];

 

  [ my answer ]
function findMinNumber(arr) {
  let min = arr[0];

 

  for(let i=1; i < arr.length; i++){
    if (arr[i] < min){
      min = arr[i];
    }
  }
  return min;
}

==> 설명

min 변수에 인덱스 0을 할당시켜놓고, for문 시작을 1로 한다. 

arr.length 로 길이를 찾고 그 중 가장 작은 수를 리턴한다.



const result1 = (findMinNumber(arr1) === 10);
const result2 = (findMinNumber(arr2) === 1);
const result3 = (findMinNumber(arr3) === 3);

if (
  result1 &&
  result2 &&
  result3
) {
  alert("🎉");
}
console.log(result1);

 

 

 

 

4.  < 묻고 더블로 >

  숫자 요소로 이루어진 배열이 인자로 주어졌을 때, 다음과 같은 조건을 만족하는 함수를 작성해 주세요!

  📌 배열의 요소가 2번 반복되는 새로운 배열이 반환되어야 합니다.
  📌 반환된 배열은 인자로 들어간 배열 길이의 2배가 되어야 합니다.
  📌 빈 배열이 주어질 경우는 고려하지 않아도 됩니다.


  +--------------------------------------------------------------------+
  |                arr                   |            리턴 값            |
  +--------------------------------------------------------------------+  
  |               [1, 2]                 |         [1, 2, 1, 2]        |
  +--------------------------------------------------------------------+                   
  |              [1, 2, 3]               |      [1, 2, 3, 1, 2, 3]     |
  +--------------------------------------------------------------------+  
  |             [5, 7, 3, 1]             |   [5, 7, 3, 1, 5, 7, 3, 1]  |
  +--------------------------------------------------------------------+

*/

const arr1 = [1, 2, 1];
const arr2 = [1, 3, 5, 3, 1];
const arr3 = [1, 6, 8, 4, 2, 3];

 

  [ my  answer ]
function doubleArray(arr) {
  let result = [];
  for(let i = 0; i <2; i++){
    result.push(...arr);
  }
   return result;
}

==> 설명

push() 메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환함.

배열을 한번 복사하라는 의미로 이해했고, 최근에 스프레드 연산자(전개연산자) 배운것이 생각나서

...arr사용하여 push해줬다.

스프레드 연산자 (...) - 배열의 모든 개별 원소를 풀어 배열에 넣는다. 

아 답답하다 내가 사용한걸 제대로 설명할 수 있어야하는데.. 쩝 

 


const result1 = doubleArray(arr1); // [1, 2, 1, 1, 2, 1]를 반환해야 합니다.
const result2 = doubleArray(arr2); // [1, 3, 5, 3, 1, 1, 3, 5, 3, 1]를 반환해야 합니다.
const result3 = doubleArray(arr3); // [1, 6, 8, 4, 2, 3, 1, 6, 8, 4, 2, 3]를 반환해야 합니다.

if (
  checkResult(result1, arr1) &&
  checkResult(result2, arr2) &&
  checkResult(result3, arr3)
) {
  alert("🎉");
}

console.log(result1);
















// 결과값 확인을 위한 함수이니 신경쓰지 않으셔도 됩니다.

function checkResult (result, arr) {
  if (result.length !== (arr.length * 2)) {
    return false;
  }

  for (let i = 0; i < result.length; i++) {
    if (result[i] !== arr[i % arr.length]) {
      return false;
    }
  }

  return true;
}