๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

22.08.11_TIL

by ํ˜ธ๋ฐ€์ด 2022. 8. 10.

๐Ÿ“Œ ์–ด์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํŽ˜์–ด์™€ ํ•จ๊ป˜ ํ‘ธ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋Š”๋ฐ 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