๐Ÿ“– TIL - ์žฌ๊ท€์™€ ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ํ’€์–ด๋ณด๋Š” ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๐Ÿงฉ

์Š˜ยท2025๋…„ 1์›” 13์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
23/90

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช…

์ฃผ์–ด์ง„ ์ˆซ์ž ๋ฐฐ์—ด์—์„œ 3๊ฐœ์˜ ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๋”ํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

์ž…๋ ฅ

  • ์ˆซ์ž ๋ฐฐ์—ด nums

์ถœ๋ ฅ

  • 3๊ฐœ์˜ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

์˜ˆ์‹œ

nums = [1,2,3,4]
// ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ: [1,2,4], [1,3,4]
// ์ถœ๋ ฅ: 2

๐Ÿค” ๋ฌธ์ œ ์ ‘๊ทผ

  1. 3์ค‘ for๋ฌธ ์ ‘๊ทผ

    function solution(nums) {
      let answer = 0;
      let size = nums.length;
      
      for(let i = 0; i < size; i++) {
        for(let j = i+1; j < size; j++) {
          for(let k = j+1; k < size; k++) {
            const sum = nums[i] + nums[j] + nums[k];
            if(isPrime(sum)) answer++;
          }
        }
      }
      return answer;
    }
  2. ๋ฐฑํŠธ๋ž˜ํ‚น ์ ‘๊ทผ

    function solution(nums) {
      let answer = 0;
      
      function findCombinations(selected, startIdx) {
        if(selected.length === 3) {
          const sum = selected.reduce((a,b) => a+b, 0);
          if(isPrime(sum)) answer++;
          return;
        }
        
        for(let i = startIdx; i < nums.length; i++) {
          selected.push(nums[i]);
          findCombinations(selected, i+1);
          selected.pop();
        }
      }
      
      findCombinations([], 0);
      return answer;
    }

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ์†Œ์ˆ˜ ํŒ๋ณ„ ํ•จ์ˆ˜ ์ตœ์ ํ™”

    function isPrime(num) {
      // i*i <= num์œผ๋กœ ์ตœ์ ํ™”
      for(let i = 2; i*i <= num; i++) {
        if(num % i === 0) return false;
      }
      return true;
    }
  2. ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ†ตํ•œ ์กฐํ•ฉ ์ƒ์„ฑ

    • ์„ ํƒ๋œ ์ˆซ์ž๋ฅผ ๋ฐฐ์—ด์— ์ถ”๊ฐ€
    • ์žฌ๊ท€ ํ˜ธ์ถœ๋กœ ๋‹ค์Œ ์ˆซ์ž ์„ ํƒ
    • ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ์ด์ „ ์ƒํƒœ๋กœ ๋ณต๊ท€

๐Ÿ” ์ฝ”๋“œ ์„ค๋ช…

๋ฐฑํŠธ๋ž˜ํ‚น ๋™์ž‘ ๊ณผ์ •

  1. ๋นˆ ๋ฐฐ์—ด []๋กœ ์‹œ์ž‘
  2. ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž ์„ ํƒ ํ›„ ๋ฐฐ์—ด์— ์ถ”๊ฐ€
  3. ์žฌ๊ท€์ ์œผ๋กœ ๋‹ค์Œ ์ˆซ์ž ์„ ํƒ
  4. 3๊ฐœ๊ฐ€ ์„ ํƒ๋˜๋ฉด ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ณ  ์†Œ์ˆ˜ ํŒ๋ณ„
  5. ์ด์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค๋ฅธ ์กฐํ•ฉ ์‹œ๋„

์†Œ์ˆ˜ ํŒ๋ณ„ ์ตœ์ ํ™”

  • ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ํ™•์ธํ•˜์—ฌ ํšจ์œจ์„ฑ ํ–ฅ์ƒ
  • ์˜ˆ: 36์˜ ์•ฝ์ˆ˜๋Š” 1, 2, 3, 4, 6, 9, 12, 18, 36
  • โˆš36 = 6์„ ๊ธฐ์ค€์œผ๋กœ ๋Œ€์นญ์ด๋ฏ€๋กœ 6๊นŒ์ง€๋งŒ ํ™•์ธ

โœจ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์ 

  1. ๋ฐฑํŠธ๋ž˜ํ‚น์˜ ๊ฐœ๋…๊ณผ ํ™œ์šฉ

    • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ํƒ์ƒ‰
    • ๋ถˆํ•„์š”ํ•œ ํƒ์ƒ‰์„ ์ œ๊ฑฐํ•˜์—ฌ ํšจ์œจ์„ฑ ํ–ฅ์ƒ
    • ๊ฒฐ์ • ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ
  2. ์žฌ๊ท€ ํ•จ์ˆ˜์˜ ์žฅ์ 

    • ๋ณต์žกํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„
    • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
    • ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ด
  3. ์†Œ์ˆ˜ ํŒ๋ณ„ ์ตœ์ ํ™”

    • ์ œ๊ณฑ๊ทผ ํ™œ์šฉ์œผ๋กœ ์—ฐ์‚ฐ ํšŸ์ˆ˜ ๊ฐ์†Œ
    • ์ˆ˜ํ•™์  ๊ฐœ๋…์„ ์ฝ”๋“œ์— ์ ์šฉ

๐Ÿš€ ์ด๋Ÿฐ ์ ์ด ํšจ์œจ์ ์ด์—์š”

  • ์žฌ๊ท€๋ฅผ ํ†ตํ•œ ๊น”๋”ํ•œ ์ฝ”๋“œ ๊ตฌํ˜„
  • ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ ์ œ๊ฑฐ
  • ์†Œ์ˆ˜ ํŒ๋ณ„ ์ตœ์ ํ™”๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  • ํ™•์žฅ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ (n๊ฐœ ์„ ํƒ์œผ๋กœ ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ)

โญ๏ธ ์ฐธ๊ณ  ์ž๋ฃŒ

  • ๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ดํ•ด
  • ์†Œ์ˆ˜ ํŒ๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•
  • JavaScript ์žฌ๊ท€ ํ•จ์ˆ˜ ํ™œ์šฉ๋ฒ•
profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€