λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Java Script/곡뢀 기둝

[JavaScript] Part3 Studying

πŸ“λ¬Έμ œ 좜처

     - λ°”닐라 μ½”λ”©

문제 1 - 켄을 찾아라

/*

  < 켄을 찾아라 >

  λ¬Έμžμ—΄ μš”μ†Œλ‘œ 이루어진 배열이 인자둜 μ£Όμ–΄μ‘Œμ„ λ•Œ, λ‹€μŒκ³Ό 같은 쑰건을 λ§Œμ‘±ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄ μ£Όμ„Έμš”!
  
  πŸ“Œ 인자둜 λ“€μ–΄μ˜¨ λ°°μ—΄μ˜ μš”μ†Œ 쀑 λ¬Έμžμ—΄ "Ken"의 인덱슀λ₯Ό 찾을 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
	πŸ“Œ 인덱슀λ₯Ό 찾은 ν›„ "켄은 1에 μžˆλ‹€" λΌλŠ” ν˜•μ‹μ˜ λ¬Έμžμ—΄μ΄ λ¦¬ν„΄λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  πŸ“Œ λ¬Έμžμ—΄ "Ken"의 μœ„μΉ˜μ™€, λ°°μ—΄ μš”μ†Œμ˜ κ°―μˆ˜μ™€ 상관없이 ν•¨μˆ˜λŠ” μ •μƒμ μœΌλ‘œ μž‘λ™λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  πŸ“Œ λ°°μ—΄ μš”μ†Œμ— "Ken"이 μ€‘λ³΅λ˜κ±°λ‚˜, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°λŠ” μ—†μŠ΅λ‹ˆλ‹€.
  πŸ“Œ 빈 배열이 μ£Όμ–΄μ§ˆ κ²½μš°λŠ” κ³ λ €ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.


  +--------------------------------------------------------------------+
  |                arr                   |            리턴 κ°’            |
  +--------------------------------------------------------------------+  
  |  ["Jett", "Leo", "Ken", "Justin"]    |         "켄은 2에 μžˆλ‹€"        |
  +--------------------------------------------------------------------+                   
  |   ["Lee", "Park", "Jung", "Ken"]     |         "켄은 3에 μžˆλ‹€"        |
  +--------------------------------------------------------------------+                    

*/

const vaco1 = ["Jett", "Ken"];
const vaco2 = ["Leo", "Kim", "Ken", "Lee"];
const vaco3 = ["Ken", "Justin", "Jett"];

function findKen(arr) {
  πŸ’¬;
};

console.log(findKen(vaco1));

const result1 = (findKen(vaco1) === "켄은 1에 μžˆλ‹€");
const result2 = (findKen(vaco2) === "켄은 2에 μžˆλ‹€");
const result3 = (findKen(vaco3) === "켄은 0에 μžˆλ‹€");

if (
  result1 &&
  result2 &&
  result3
) {
  alert("πŸŽ‰");
}

문제 풀이

function findKen(arr) {
  let kenPosition = arr.indexOf("Ken");
  return `켄은 ${kenPosition}에 μžˆλ‹€`;
};
  1. indexOf() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ„œ 찾은 λ°°μ—΄ λ‚΄ "Ken"의 인덱슀λ₯Ό μ €μž₯ ν•  λ³€μˆ˜ μ„ μ–Έ
  2. text string을 μ΄μš©ν•΄μ„œ "켄은 n에 μžˆλ‹€"λ₯Ό λ°˜ν™˜ν•˜λŠ” returnλ¬Έ μž‘μ„±

문제 2 - λ°”μ½”λ°”μ½”λ°”μ½”λ°”

/*

  < λ°”μ½”λ°”μ½”λ°”μ½”λ°” >

  μˆ«μžκ°€ 인자둜 μ£Όμ–΄μ‘Œμ„ λ•Œ, λ‹€μŒκ³Ό 같은 쑰건을 λ§Œμ‘±ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄ μ£Όμ„Έμš”!

  πŸ“Œ n이 1인 경우 λ¬Έμžμ—΄ "λ°”"λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  πŸ“Œ n이 2인 경우 λ¬Έμžμ—΄ "λ°”μ½”"λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  πŸ“Œ n이 3인 경우 λ¬Έμžμ—΄ "λ°”μ½”λ°”"λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  πŸ“Œ κ·Έ μ΄μƒμ˜ μˆ«μžλŠ” μ•„λž˜ μ˜ˆμ‹œλ₯Ό μ°Έκ³ ν•΄ μ£Όμ„Έμš”.
  πŸ“Œ repeat λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€.
  πŸ“Œ n은 항상 1이상 μž…λ‹ˆλ‹€.

  
  +--------------------------------------------------------------------+
  |                 n                    |            리턴 κ°’            |
  +--------------------------------------------------------------------+ 
  |                 1                    |             "λ°”"             |
  +--------------------------------------------------------------------+
  |                 2                    |            "λ°”μ½”"            |
  +--------------------------------------------------------------------+ 
  |                 3                    |           "λ°”μ½”λ°”"            |
  +--------------------------------------------------------------------+
  |                 5                    |          "λ°”μ½”λ°”μ½”λ°”"          |
  +--------------------------------------------------------------------+                    
  |                 7                    |         "λ°”μ½”λ°”μ½”λ°”μ½”λ°”"        |
  +--------------------------------------------------------------------+
  |                12                    |      "λ°”μ½”λ°”μ½”λ°”μ½”λ°”μ½”λ°”μ½”λ°”μ½”"    |
  +--------------------------------------------------------------------+
 
*/

function repeatVaco(n) {
  πŸ’¬;
}

const result1 = (repeatVaco(1) === "λ°”");
const result2 = (repeatVaco(2) === "λ°”μ½”");
const result3 = (repeatVaco(4) === "λ°”μ½”λ°”μ½”");
const result4 = (repeatVaco(5) === "λ°”μ½”λ°”μ½”λ°”");
const result5 = (repeatVaco(10) === "λ°”μ½”λ°”μ½”λ°”μ½”λ°”μ½”λ°”μ½”");

if (
  result1 &&
  result2 &&
  result3 &&
  result4 &&
  result5
) {
  alert("πŸŽ‰");
}

문제 풀이

function repeatVaco(n) {
  let result = "";
  let ba = "λ°”";
  let co = "μ½”";
  
  for(let i = 0; i < n ; i++){
    if(i % 2 === 0){
      result += ba;
    }else{
      result +=co;
    }
  }
  return result;
};
  1. resultμ΄λΌλŠ” μƒˆλ‘œ 생성 될 λ¬Έμžμ—΄μ„ 담을 λ³€μˆ˜ 생성 & baλŠ” "λ°”"λ₯Ό 담을 λ³€μˆ˜λ‘œ, coλŠ” "co"λ₯Ό 담을 λ³€μˆ˜λ‘œ μ„ μ–Έ
  2. for ꡬ문을 μ΄μš©ν•΄μ„œ iλ₯Ό 0으둜 μ„ μ–Έ ν›„ μ•„λž˜μ™€ 같이 λ™μž‘ν•˜λŠ” 반볡문 μž‘μ„±
    - μ΄ˆκΈ°ν™” λΆ€λΆ„ : iλŠ” 0μ΄λΌλŠ” λ³€μˆ˜ μ„ μ–Έ
    - 반볡 쑰건 : iκ°€ n보닀 μž‘μ„ μ‹œ
    - λ™μž‘ : if ꡬ문을 μ‚¬μš©ν•΄μ„œ λ§Œμ•½ iλ₯Ό 2둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ 0이라면 "λ°”"λ₯Ό 좜λ ₯ν•˜κ³  2둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ λ‹€λ₯Έ 값이 좜λ ₯되면 "μ½”"λ₯Ό 좜λ ₯ν•˜λ„λ‘ μž‘μ„±ν–ˆλ‹€. μ΄λ•Œ i의 초기 값은 0이기 λ•Œλ¬Έμ— 0을 λ‚˜λˆ„μ—ˆμ„ λ•Œ 0μ΄λ―€λ‘œ 맨 μ²˜μŒμ—λŠ” "λ°”"κ°€ 좜λ ₯λœλ‹€.
    - λ™μž‘ ν›„ λ™μž‘ : iλ₯Ό 1μ”© μ¦κ°€ν•˜κ²Œ 함.

문제 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];

function findMinNumber(arr) {
  πŸ’¬;
}

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

if (
  result1 &&
  result2 &&
  result3
) {
  alert("πŸŽ‰");
}

문제 풀이

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

function findMinNumber(arr) {
  let minValue = Math.min(...arr);
  return minValue;
};
  1. Math.min() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ μ΅œμ†Œκ°’μ„ λ³€μˆ˜μ— λ‹΄λŠ” μ½”λ“œ μž‘μ„±ν–ˆλ‹€.
  2. Math.min() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ‹ˆ ν•˜λ‚˜μ˜ 숫자만 λ‹΄κ²¨μžˆλŠ” 배열인 arr1μ—μ„œλŠ” 잘 λ™μž‘ν–ˆμ§€λ§Œ, 숫자의 배열인 객체인(μ—¬λŸ¬κ°œμ˜ μˆ«μžλ“€λ‘œ 배열이 κ΅¬μ„±λ˜μ–΄μžˆλŠ”) arr2와 arr3에 Math.min() λ©”μ„œλ“œλ₯Ό μ μš©ν•˜λ‹ˆ NaN을 λ°˜ν™˜ν–ˆλ‹€. μ΄μœ λŠ” 숫자의 배열인 κ°μ²΄λŠ” 단일 ν•­λͺ©μœΌλ‘œ μ·¨κΈ‰λ˜λ―€λ‘œ μ΄λŠ” 숫자둜 취급을 ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ NaN(*Not a Number)값을 λ°˜ν™˜ν•œ 것이닀.
  3. λ”°λΌμ„œ arr 인수 값을 넣을 λ•Œ μ•žμ— μŠ€ν”„λ ˆλ“œ μ—°μ‚°μžμΈ ...을 μΆ”κ°€ν•΄μ£Όλ©΄ 각 배열을 전달해주기 λ•Œλ¬Έμ— μ΅œμ†Œκ°’μ„ λ°˜ν™˜ν•œλ‹€.