roqkf

์Šคํ„ฐ๋”” ๊ธฐ๋ก 18 ๋ณธ๋ฌธ

๐Ÿ’ป Development/Study

์Šคํ„ฐ๋”” ๊ธฐ๋ก 18

ahyeon7 2022. 12. 19. 21:31

๋ฌธ์ œ ๋ชฉ๋ก

โค๏ธ‍๐Ÿ”ฅ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

function solution(s) {
  const start = '(';
  const end = ')';

  //! ์‹œ์ž‘์ด "("๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋กœ false ๋ฆฌํ„ด
  if (s[0] !== start || s.length < 2 || s.at(-1) !== end) return false;

  let cnt = 0;

  //! '('์ผ ๋•Œ cnt++
  //! else =>  cnt๊ฐ€  0์ด๋ผ๋ฉด ์•ž์— '('๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ฐ”๋กœ false ๋ฆฌํ„ด
  //!          cnt--
  for (let i = 0; i < s.length; i++) {
    if (s[i] === start) cnt++;
    else {
      if (!cnt) {
        return false;
      }
      cnt--;
    }
  }

  //? ์ตœ์ข…์ ์œผ๋กœ cnt๊ฐ€ 0์ด๋ฉด true;
  return cnt === 0 ? true : false;
}
solution('()())(()');

์ฒ˜์Œ์— ์—ฌ๋Š” ๊ด„ํ˜ธ๋กœ ์‹œ์ž‘ํ•ด์„œ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋กœ๋งŒ ๋๋‚˜๋ฉด ๋˜๋Š” ์ค„ ์•Œ์•˜๋˜ ๋ฌธ์ œ... ์™œ ์ด๋ ‡๊ฒŒ ์‰ฌ์šด์ง€ ์˜๋ฌธ์ด ๋“ค ๋•Œ๋Š” ํ•ญ์ƒ ๋‚ด๊ฐ€ ๋ฌธ์ œ ์ดํ•ด๋ฅผ ์ž˜๋ชปํ–ˆ๋˜ ๊ฒƒ,,,, ๋ฐ”๋กœ ์ˆ˜์ •ํ•ด์„œ ์ตœ์ข…์œผ๋กœ ๋‚˜์˜จ ์ฝ”๋“œ์ด๋‹ค. ํšจ์œจ์„ฑ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ฒ˜์Œ if๋ฌธ์—์„œ ์ฒ˜์Œ์ด๋‚˜ ๋์ด ์—ฌ๋Š” ๊ด„ํ˜ธ, ๋‹ซ๋Š” ๊ด„ํ˜ธ๋กœ ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋กœ false๋ฅผ ๋ฆฌํ„ด ์‹œ์ผœ ์คฌ๋‹ค.

โค๏ธ‍๐Ÿ”ฅ ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

function solution(s) {
  let cnt = 0;
  let zero = 0;

  //! ํ•œ ๊ธ€์ž๊ฐ€ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ์‹คํ–‰
  while (s > 1) {
    let len = s.length;
    //? s์˜ ๋ชจ๋“  0์„ ์ œ๊ฑฐ
    s = s.replaceAll('0', '');
    //? ์ฒ˜์Œ ๋“ค์–ด์˜จ s์˜ ๊ธธ์ด - 0์„ ์ œ๊ฑฐํ•œ ํ›„์˜ s์˜ ๊ธธ์ด๋ฅผ zero์— ๋ˆ„์ 
    zero += len - s.length;
    //? s์˜ ๊ธธ์ด๋ฅผ 2์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„
    s = s.length.toString(2);
    //? ์ด์ง„ ๋ณ€ํ™˜ ํšŸ์ˆ˜ cnt
    cnt++;
  }

  return [cnt, zero];
}

solution('110010101001');

ํ•œ ๊ธ€์ž๊ฐ€ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” ์ •์˜๋ฅผ ์ˆ˜ํ–‰์‹œ์ผœ ์ฃผ์—ˆ๋‹ค ๋‚˜์™€ ๋‹ค๋ฅด๊ฒŒ ์ •๊ทœ์‹์„ ํ†ตํ•ด์„œ ํ’€์–ด๋‚ด์‹  ๋™์›๋‹˜ ์ฝ”๋“œ๊ฐ€ ๊ธฐ์–ต์— ๋‚จ์•„ ๋‚จ๊ธฐ๋„๋ก ํ•˜๊ฒ ๋‹ค ใ…Žใ…Ž

function solution(s) {
    var answer = [];
    let round = 0;      // ์‹คํ–‰ํ•œ ํšŒ์ฐจ
    let countzero = 0;    // ์ œ๊ฑฐํ•  ๋ชจ๋“  0์˜ ๊ฐœ์ˆ˜    

    const take1 = /[1]/g              // s์—์„œ '1'๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
    const take0 = /[0]/g              // s์—์„œ '0'๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ      

    let delzero = 0;    // ์ œ๊ฑฐํ•  0์˜ ๊ฐœ์ˆ˜
    let num1 = 0;    // 0์ œ๊ฑฐ ํ›„ ๊ฐ’์˜ ๊ธธ์ด

    while(s.length !== 1){                    
            round++; // ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ ๋•Œ๋งˆ๋‹ค round๋ฅผ ๋”ํ•ด์ฃผ๊ธฐ
            //* Step1. ์ œ๊ฑฐํ•  0์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ            
            // tmp์— 0์ด ์žˆ๋‹ค๋ฉด 0์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
            if(take0.test(s)){                     // tmp์— 0์ด ์žˆ๋‹ค๋ฉด
                delzero = s.match(take0).length;   // tmp์˜ 0์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
            }else{
                delzero = 0; // tmp์— 0์ด ์—†๋‹ค๋ฉด ์ œ๊ฑฐํ•  0์˜ ๊ฐœ์ˆ˜ 0๊ฐœ๋กœ ์„ ์–ธ
            }
            countzero += delzero; // 0์„ ์ œ๊ฑฐํ•œ ๊ฐœ์ˆ˜

            //* Step2. ์ด์ง„๋ฒ•ํ™” ํ•˜๊ธฐ์œ„ํ•œ 1์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
            num1 = s.match(take1).length;   // 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

            //* Step3. ๊ฐ€์ ธ์˜จ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์ด์ง„๋ฒ•ํ™”๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ             
            s = num1.toString(2); // 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์ด์ง„๋ฒ•ํ™”                        
    } 
    answer.push(round, countzero);    
    return answer;
}

โค๏ธ‍๐Ÿ”ฅ ์ˆซ์ž์˜ ํ‘œํ˜„

function solution(n) {
  // ์ž๊ธฐ ์ž์‹ ์€ ๋ฌด์กฐ๊ฑด ํฌํ•จ์ด๋‹ˆ๊นŒ cnt๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘
  let cnt = 1;

  // n์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์˜ ์ˆ˜๋Š” ์กฐํ•ฉ ์‹œ n์„ ๋ฌด์กฐ๊ฑด ๋„˜์œผ๋‹ˆ๊นŒ  n/2
  for (let i = 1; i <= n / 2; i++) {
    let sum = i;
    for (let j = i + 1; j <= n; j++) {
      sum += j;
      if (sum === n) cnt++;
      else if (sum > n) break;
    }
  }
  return cnt;
}

solution(15);

์ ‘๊ทผ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ ์ง€ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ฌธ์ œ์ด๋‹ค. ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋‹ค๊ฐ€ ํ•˜๋‚˜์”ฉ ์กฐํ•ฉํ•ด ๋ณด๋Š” ์‹์œผ๋กœ ํ’€์—ˆ๋‹ค. ์ด ๋ฌธ์ œ ๋˜ํ•œ ํšจ์œจ์„ฑ ๋•Œ๋ฌธ์— n์˜ ์ ˆ๋ฐ˜๋งŒ ๊ตฌํ•ด๋„ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ์ ˆ๋ฐ˜๋งŒ ๊ตฌํ•˜๋Š” ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ ์Šคํ„ฐ๋”” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋ฉด์„œ ํ™€์ˆ˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋กœ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค ์ด์™€ ๋”๋ถˆ์–ด ๋ฏผํ˜๋‹˜์ด ๋ฐœํ‘œํ•˜์‹œ๋Š” ๊ฑธ ๋ณด๋ฉด์„œ ๋Œ€๋‹จํ•˜๋Š” ๋ง๋ฐ”๊ผ,,,, ์•ฝ์ˆ˜์— ์ ‘๊ทผํ•˜์‹  ๊ฒƒ๋ถ€ํ„ฐ๊ฐ€ ๋„˜ ๋ฉ‹์ง€๋‹ค.

function getDivisors(n) {
    const result = [];
    const sqrt = Math.sqrt(n);
    for (let i = 1; i < sqrt; i++) {
        if (n % i === 0) result.push(i, n / i);
    }
    if (Number.isInteger(sqrt)) result.push(sqrt);
    return result.sort((a, b) => a - b);
}

// global n
const n = 15

// 1 ํ™•์ธ
function tmp(n) {
    const divisors = getDivisors(n);
    // ํ•ฉ n/d x d๊ฐœ = n
    const result = [];
    divisors.forEach(d => {
        let arr = [];
        let D = n / d;
        // 1. d odd
        // d odd, D odd
        // d=3, D=7, n =21 -> 6,7,8
        // d odd, D even
        // d=5, D=4, n=20 -> 2,3,4,5,6
        if (d % 2 === 1) {
            for (let i = -Math.floor(d / 2); i <= Math.floor(d / 2); i++) {
                if (D + i < 1) break;
                arr.push(D + i);
            }
        }
        if (arr.length !== 0) result.push(arr);
        arr = [];
        // d even, D even
        // d=, D=, n=, -> 
        // d even, D odd
        // d=2, D=9, n=18 -> 3,4,5,6
        if (D % 2 === 1) {
            for (let i = -d; i < d; i++) {
                if (Math.ceil(D / 2) + i < 1) break;
                arr.push(Math.ceil(D / 2 + i));
            }
        }
        if (arr.length !== 0) result.push(arr);
    });
    return result;
}
console.log(tmp(n));

// ๊ฒฐ๊ตญ divisors์˜ d์—๋Š” eachSum(=n/d)์ด ํ• ๋‹น๋œ๋‹ค
// -> ๋‘๊ฐ€์ง€ ์ผ€์ด์Šค ํ•ฉ์น˜๊ธฐ

// 2
function solution2(n) {
    let cnt = 0;
    const divisors = getDivisors(n);
    divisors.forEach(d => {
        let D = n / d;
        if (d % 2 === 1) {
            if (D - Math.floor(d / 2) >= 1) cnt++;
            if (Math.ceil(d / 2) - D >= 1) cnt++;
        }
    });
    return cnt;
}
console.log(solution2(n));

// ์กฐ๊ฑด๋ฌธ ๋ถ„์„
// ๊ทธ๋ž˜ํ”„
// 3
function solution(n) {
    const divisors = getDivisors(n);
    return divisors.filter(d => d % 2 === 1).length;
}
console.log(solution(n));

'๐Ÿ’ป Development > Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์Šคํ„ฐ๋”” ๊ธฐ๋ก 21  (0) 2023.01.09
์Šคํ„ฐ๋”” ๊ธฐ๋ก 20  (0) 2022.12.27
์Šคํ„ฐ๋”” ๊ธฐ๋ก 17  (0) 2022.12.16
์Šคํ„ฐ๋”” ๊ธฐ๋ก 15  (0) 2022.12.11
์Šคํ„ฐ๋”” ๊ธฐ๋ก 14  (1) 2022.12.11