Unit1 회고

YEN JΒ·2022λ…„ 10μ›” 21일
0

code states

λͺ©λ‘ 보기
27/43

μž¬κ·€

πŸ”† μž¬κ·€μ˜ 이해

μž¬κ·€ν•¨μˆ˜πŸͺ

μž¬κ·€μ˜ 사전적인 의미λ₯Ό 보면 μ›λž˜μ˜ 곳으둜 λ‹€μ‹œ λ˜λŒμ•„μ˜€λŠ” 것을 λ§ν•˜λŠ”λ° ν•œ 단계 더 λ‚˜μ•„κ°€ 컴퓨터 κ³Όν•™ μš©μ–΄μ—μ„œμ˜ μž¬κ·€λž€ μ–΄λ– ν•œ 것을 μ •μ˜ν•  λ•ŒκΉŒμ§€ 자기 μžμ‹ μ„ μ°Έμ‘°ν•˜λŠ” 것을 λœ»ν•œλ‹€. 이와 같은 νλ¦„μœΌλ‘œ μž¬κ·€ν•¨μˆ˜λ₯Ό μ„€λͺ…ν•œλ‹€λ©΄ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 자기 μžμ‹ μ„ 호좜(μ°Έμ‘°)ν•˜λŠ” ν•¨μˆ˜λΌκ³  ν•  수 μžˆλ‹€.

μž¬κ·€μ˜ ν•„μš”μ„±

  • 주어진 문제λ₯Ό 더 μž‘μ€ λ‹¨μœ„λ‘œ μͺΌκ°€ 수 μžˆλŠ” 경우
    β—οΈμ£Όμ˜β—οΈ
    μͺΌκ°œμ§„ μž‘μ€ λ‹¨μœ„λŠ” μ›λž˜μ˜ ꡬ쑰와 μœ μ‚¬ν•΄μ•Ό 함
  • 반볡문이 λ„ˆλ¬΄ 많이 μ€‘μ²©λ˜κ±°λ‚˜ μ€‘μ²©λ˜λŠ” 횟수λ₯Ό μ˜ˆμΈ‘ν•˜κΈ° μ–΄λ €μš΄ 경우

πŸ”† μž¬κ·€μ˜ ν™œμš©

μž¬κ·€μ  사고 κ°€μ΄λ“œπŸ˜Ž

1️⃣ μž¬κ·€ ν•¨μˆ˜μ˜ μž…μΆœλ ₯κ°’ μ •μ˜ν•˜κΈ°
2️⃣ 문제λ₯Ό μͺΌκ°œμ–΄ 더 이상 λ‚˜λˆŒ 수 μ—†λŠ” κ°€μž₯ μž‘μ€ λ‹¨μœ„κΉŒμ§€ λ‚˜λˆ„κΈ°
3️⃣ κ°€μž₯ μž‘μ€ λ‹¨μœ„μ˜ 문제λ₯Ό ν•΄κ²°ν•˜κΈ°

  - μž¬κ·€μ˜ 기초(base case): κ°€μž₯ μž‘μ€ λ‹¨μœ„μ˜ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 경우의 수
  - base caseλŠ” μž¬κ·€μ˜ νƒˆμΆœ 쑰건을 ꡬ성
    - μž¬κ·€μ˜ νƒˆμΆœ 쑰건: μž¬κ·€ 호좜이 λ©ˆμΆ”λŠ” 쑰건

4️⃣ 보닀 큰 λ‹¨μœ„μ˜ 문제λ₯Ό 순차적으둜 ν•΄κ²°ν•˜κΈ°
5️⃣ μ½”λ“œ κ΅¬ν˜„ν•˜κΈ°

μž¬κ·€ν•¨μˆ˜ μž‘μ„± μ˜ˆμ‹œ

  • number νƒ€μž…μ˜ μ •μˆ˜λ₯Ό μž…λ ₯λ°›μ•„ μ§μˆ˜μΈμ§€ μ—¬λΆ€λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜
    0은 짝수둜 κ°„μ£Ό
    1️⃣ number νƒ€μž…μ˜ μ •μˆ˜λ₯Ό μž…λ ₯λ°›μ•„ boolean νƒ€μž…μ„ 리턴해야 ν•œλ‹€
    2️⃣ μž…λ ₯받은 μˆ«μžκ°€ μ§μˆ˜μΈμ§€ μ•„λ‹Œμ§€λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄ κ°€μž₯ 기본이 λ˜λŠ” λ‹¨μœ„λ‘œ 0κ³Ό 1이 될 λ•ŒκΉŒμ§€ 2μ”© λΊ€λ‹€
    3️⃣ 0은 짝수, 1은 ν™€μˆ˜(μ§μˆ˜κ°€ μ•„λ‹˜)둜 ν•΄κ²°ν•œλ‹€
    4️⃣ μž…λ ₯받은 μˆ«μžκ°€ 2μ”© λΊ€ κ²°κ³Όκ°€ 0이라면 짝수, 1이라면 μ§μˆ˜κ°€ μ•„λ‹˜μœΌλ‘œ νŒλ³„ν•œλ‹€
    5️⃣ μ½”λ“œλ‘œ κ΅¬ν˜„ν•œλ‹€
      function isEven(num) {
        // μ ˆλŒ€κ°’μ„ 톡해 음의 μ •μˆ˜λ„ μ–‘μ˜ μ •μˆ˜λ‘œ λ³€κ²½
        num = Math.abs(num); 

        // base case
        if (num === 0) {
          return true;
        } 
        if (num === 1) {
          return false;
        }

        // recursive case
        return isEven(num-2);
      }

μž¬κ·€ν•¨μˆ˜μ˜ λ™μž‘ μ›λ¦¬πŸ§

  • sumTo(num): 0λΆ€ν„° 주어진 숫자 numκΉŒμ§€μ˜ 합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜
    function sumTo(num) {
        // base case
        if (num === 0) {
            return 0;
        }
        // recursive case
        return num + sumTo(num-1);
    }
  • 큰 λ‹¨μœ„μ—μ„œλΆ€ν„° μž‘μ€ λ‹¨μœ„λ‘œ λ‚΄λ €κ°€λŠ” κ³Όμ •
  • κ°€μž₯ μž‘μ€ λ‹¨μœ„μ—μ„œ λ‹€μ‹œ μ˜¬λΌμ˜€λŠ” κ³Όμ •

<였늘의 일기>
λΆ€νŠΈμΊ ν”„ 초반 반볡문의 κ΅΄λ ˆμ— λΉ μ Έ ν—ˆμš°μ λŒ€λ‹€κ°€ 겨우 λΉ μ Έλ‚˜μ˜¨ 이후 μ˜€λžœλ§Œμ— 같은 기뢄을 λŠκ»΄λ΄€λ‹€...γ…Ž ν•˜μ§€λ§Œ κ·Έ λ•Œμ™€ 달라진 점이 μžˆλ‹€λ©΄ κ·Έ λ•ŒλŠ” ν¬κΈ°ν•˜κ³  싢은 λ§ˆμŒμ΄μ—ˆκ³  μ§€κΈˆμ€ ν’€μ–΄λ‚΄κ³  싢은 λ§ˆμŒμ΄λΌλŠ” 점이닀. κ·Έκ²ƒλ§ŒμœΌλ‘œλ„ 큰 λ°œμ „μ΄λΌκ³  μƒκ°ν•˜κ³  λκΉŒμ§€ 도전해봐야겠닀.
μ΄λ²ˆμ— λ§Œλ‚˜κ²Œ 된 νŽ˜μ–΄λΆ„μ€ μƒλŒ€λ°©κ³Ό μ†Œν†΅ν•˜λŠ” 방법을 잘 μ•„μ‹œλŠ” λΆ„ κ°™μ•˜λ‹€. κ·Έ 덕뢄에 μ–΄λ €μš΄ κ³Όμ œμ΄μ§€λ§Œ 재미있게 진행할 수 μžˆμ—ˆκ³  λ‚΄κ°€ μ•Œκ³  μžˆλŠ” 것듀 λͺ¨λ₯΄λŠ” 것듀을 νŽΈν•˜κ²Œ κ³΅μœ ν•  수 μžˆμ—ˆλ‹€. κ·ΈλŸ¬λ©΄μ„œ μƒλŒ€λ₯Ό λ°°λ €ν•˜λŠ” ν˜‘μ—…λŠ₯λ ₯이 정말 μ€‘μš”ν•˜κ΅¬λ‚˜ λ‹€μ‹œκΈˆ κΉ¨λ‹«κ²Œ 된 것 κ°™λ‹€. κ·Έ 점을 λ°°μ›Œ 이번 μ„Ήμ…˜μ—μ„œλŠ” λ‚΄κ°€ ν•  수 μžˆλŠ” μ„ μ—μ„œ νŽ˜μ–΄ ν™œλ™μ— 적극적으둜 μž„ν•΄μ•Όκ² λ‹€!

0개의 λŒ“κΈ€