Daily/Today I Learned

22.08.11_TIL

ν˜Έλ°€μ΄ 2022. 8. 10. 22:05

πŸ“Œ μ–΄μ œ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό νŽ˜μ–΄μ™€ ν•¨κ»˜ ν‘ΈλŠ” μ‹œκ°„μ΄μ—ˆλŠ”λ° 1~3번인 그리디, κ΅¬ν˜„ λ¬Έμ œλŠ” ν’€μ—ˆμœΌλ‚˜ 4번인 DP 문제λ₯Ό 풀지 λͺ»ν•˜μ˜€λ‹€ 쑰금만 더 μƒκ°ν–ˆμœΌλ©΄ ν’€μ—ˆκ² μ§€λΌλŠ” 생각도 λ“€μ—ˆμœΌλ‚˜ 그것은 μ½”λ”©ν…ŒμŠ€νŠΈλ‘œ λ”°μ§ˆλ•Œ μ‹œκ°„μ΄ 많이 κ±Έλ ΈκΈ° λ•Œλ¬Έμ— 1솔 μ •λ„μ˜ 풀이가 λ˜μ§„ λͺ»ν–ˆμ„ 것 κ°™λ‹€. μ•žμœΌλ‘œ JS둜 μ•Œκ³ λ¦¬μ¦˜μ„ λ”μš± 많이 ν’€μ–΄μ•Ό κ² λ‹€λŠ” 생각을 ν•˜κ²Œλ˜μ—ˆλ˜ ν•˜λ£¨μ˜€λ‹€. κ·Έλž˜μ„œ μ˜€λŠ˜μ€ κΌ­ λͺ¨λ“  문제λ₯Ό νŽ˜μ–΄μ™€ 같이 ν•΄κ²°ν•  수 μžˆμ—ˆμœΌλ©΄ μ’‹κ² λ‹€λŠ” 생각을 ν–ˆλ‹€.

πŸ“— 였늘 ν•™μŠ΅ν•œ λ‚΄μš©

μˆœμ—΄ (Permutaion)

  • μ„œλ‘œ λ‹€λ₯Έ n개의 μ›μ†Œλ₯Ό κ°€μ§€λŠ” μ–΄λ–€ μ§‘ν•©μ—μ„œ 쀑볡 없이 μˆœμ„œμ— μƒκ΄€μžˆκ²Œ r개의 μ›μ†Œλ₯Ό μ„ νƒν•˜κ±°λ‚˜ ν˜Ήμ€ λ‚˜μ—΄ν•˜λŠ” 것이며, μ΄λŠ” μ‘°ν•©κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ n개의 μ›μ†Œλ‘œ 이루어진 μ§‘ν•©μ—μ„œ r개의 μ›μ†Œλ‘œ 이루어진 뢀뢄집합을 λ§Œλ“œλŠ” 것과 κ°™λ‹€.

μ‘°ν•© (Combination)

  • μ„œλ‘œ λ‹€λ₯Έ n개의 μ›μ†Œλ₯Ό κ°€μ§€λŠ” μ–΄λ–€ μ§‘ν•©μ—μ„œ 쀑볡 없이 μˆœμ„œμ— μƒκ΄€μ—†κ²Œ r개의 μ›μ†Œλ₯Ό μ„ νƒν•˜λŠ” 것이며, μ΄λŠ” n개의 μ›μ†Œλ‘œ 이루어진 μ§‘ν•©μ—μ„œ r개의 μ›μ†Œλ‘œ 이루어진 뢀뢄집합을 λ§Œλ“œλŠ” 것과 κ°™λ‹€.

GCD (μ΅œλŒ€κ³΅μ•½μˆ˜, Greatest Common Divisor)

  • 두 수 μ΄μƒμ˜ μ—¬λŸ¬ 수 쀑 κ³΅ν†΅λœ *μ•½μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.
    • *μ•½μˆ˜: μ–΄λ–€ 수λ₯Ό λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€κ²Œ ν•˜λŠ” 수λ₯Ό μ˜λ―Έν•œλ‹€.
  • μ˜ˆμ‹œ
    • 6의 μ•½μˆ˜: 1, 2, 3, 6
    • 9의 μ•½μˆ˜: 1, 3, 9
    • κ³΅μ•½μˆ˜: 1, 3
    • μ΅œλŒ€ κ³΅μ•½μˆ˜: 3

LCM (μ΅œμ†Œκ³΅λ°°μˆ˜, Lowest Common Multiple)

  • κ³΅λ°°μˆ˜λŠ” 두 수 μ΄μƒμ˜ μ—¬λŸ¬ 수 쀑 κ³΅ν†΅λœ 배수λ₯Ό μ˜λ―Έν•œλ‹€.
    • *배수: ν•˜λ‚˜μ˜ μˆ˜μ— μ •μˆ˜λ₯Ό κ³±ν•œ 수 이닀.
  • μ˜ˆμ‹œ
    • 12의 배수: 12, 24, 36, 48, 60, 72, 84, 96 ...
    • 18의 배수: 18, 36, 54, 72, 90 ...
    • μ΅œμ†Œ 곡배수: 36

GCD/LCM κ΅¬ν•˜λŠ” 곡식

  • μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•
    • μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ 관련이 κΉŠμ€ 곡식이닀. 2개의 μžμ—°μˆ˜ a와 bκ°€ μžˆμ„ λ•Œ, aλ₯Ό b둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό r이라 ν•˜λ©΄ a와 b의 μ΅œλŒ€ κ³΅μ•½μˆ˜λŠ” b와 r의 μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ κ°™λ‹€λŠ” 이둠이닀.
    • bλ₯Ό r둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ r'λ₯Ό κ΅¬ν•˜κ³ , λ‹€μ‹œ r을 r'둜 λ‚˜λˆ„λŠ” 과정을 λ°˜λ³΅ν•΄, λ‚˜λ¨Έμ§€κ°€ 0이 λ˜μ—ˆμ„ λ•Œ λ‚˜λˆ„λŠ” μˆ˜κ°€ a와 b의 μ΅œλŒ€ κ³΅μ•½μˆ˜μ΄λ‹€.
let getGCD = (num1, num2) => {
    let gcd = 1;

    for (let i = 2; i <= Math.min(num1, num2); i++){
        if(num1 % i === 0 && num2 % i === 0){
            gdc = i;
        }
    }
}
/*----------------------------------------------*/
let gcd=(a,b) => {
    return a%b ? gcd(b, a%b) : b
}
  • μ΅œλŒ€ κ³΅μ•½μˆ˜(GCD)
    • 두 수 A와 B의 κ³΅ν†΅λœ μ•½μˆ˜ 쀑에 κ°€μž₯ 큰 μ •μˆ˜
    • 2λΆ€ν„° min(A, B)κΉŒμ§€ λͺ¨λ“  μ •μˆ˜λ‘œ λ‚˜λˆ„μ–΄λ³΄λŠ” 방법
let getGCD = (num1, num2) => {
    let gcd = 1;

    for (let i = 2; i <= Math.min(num1, num2); i++){
        if(num1 % i === 0 && num2 % i === 0){
            gdc = i;
        }
    }
    return gcd
}
  • μ΅œμ†Œ 곡배수(LCM)
    • 두 수, κ·Έ μ΄μƒμ˜ μ—¬λŸ¬ 수의 곡톡인 배수 쀑 κ°€μž₯ μž‘μ€ 수
    • LCM을 1λΆ€ν„° μ‹œμž‘ν•˜μ—¬ 점차 lcm++ ν•˜λ©΄μ„œ 각각의 두 수λ₯Ό LCM으둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ λ‚˜λ¨Έμ§€ 값이 0인 지λ₯Ό λΉ„κ΅ν•œλ‹€.
    • A*B/GCD
let getLCM = (num1, num2) =>{
    let lcm = 1;
   
    while(true){
      if((lcm % num1 == 0) && (lcm % num2 == 0)){
        break;
      }
      lcm++;
    }
    return lcm
}

멱집합

  • 집합 {1, 2, 3}의 λͺ¨λ“  뢀뢄집합은 {}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} 으둜 λ‚˜μ—΄ν•  수 있고, 이 λΆ€λΆ„μ§‘ν•©μ˜ 총 κ°œμˆ˜λŠ” 8κ°œμž…λ‹ˆλ‹€. 그리고 이 λͺ¨λ“  뢀뢄집합을 톡틀어 멱집합이라고 ν•œλ‹€.
  • μ–΄λ–€ 집합이 μžˆμ„ λ•Œ, 이 μ§‘ν•©μ˜ λͺ¨λ“  뢀뢄집합을 멱집합이라고 ν•œλ‹€.

πŸ“˜ μΆ”κ°€λ‘œ 곡뢀할 λ‚΄μš©

Study원과 ν•¨κ»˜ 진행쀑인 ν”„λ‘œμ νŠΈ κ΅¬ν˜„

  • 둜그인 ν•œ νšŒμ›μ˜ 정보 κ°€μ Έμ˜€κΈ°

λ‚˜λ§Œμ˜ 포트폴리였 μ‚¬μ΄νŠΈ κ΅¬ν˜„  해보기

  • Figmaλ₯Ό μ‚¬μš©ν•˜μ—¬ λ””μžμΈ 해보기

πŸ“ μ€‘μš”ν•œ λ‚΄μš©

  • μˆœμ—΄
  • μ‘°ν•©
  • μ΅œλŒ€κ³΅μ•½μˆ˜
  • μ΅œμ†Œκ³΅λ°°μˆ˜
  • 멱집합

'Daily > Today I Learned' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

22.08.16_TIL  (0) 2022.08.16
22.08.12_TIL  (0) 2022.08.12
22.08.10_TIL  (0) 2022.08.09
22.08.09_TIL  (0) 2022.08.09
22.08.08_TIL  (0) 2022.08.08