πŸ˜Ίν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - LV.3 졜고의 μ§‘ν•©[JS]

laonΒ·2024λ…„ 6μ›” 12일
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/12938

문제 μ„€λͺ…

μžμ—°μˆ˜ n 개둜 이루어진 쀑볡 μ§‘ν•©(multi set, νŽΈμ˜μƒ μ΄ν›„μ—λŠ” "μ§‘ν•©"으둜 톡칭) 쀑에 λ‹€μŒ 두 쑰건을 λ§Œμ‘±ν•˜λŠ” 집합을 졜고의 집합이라고 ν•©λ‹ˆλ‹€.

각 μ›μ†Œμ˜ 합이 Sκ°€ λ˜λŠ” 수의 μ§‘ν•©
μœ„ 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ 각 μ›μ†Œμ˜ κ³± 이 μ΅œλŒ€κ°€ λ˜λŠ” μ§‘ν•©
예λ₯Ό λ“€μ–΄μ„œ μžμ—°μˆ˜ 2개둜 이루어진 μ§‘ν•© 쀑 합이 9κ°€ λ˜λŠ” 집합은 λ‹€μŒκ³Ό 같이 4κ°œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
{ 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 }
그쀑 각 μ›μ†Œμ˜ 곱이 μ΅œλŒ€μΈ { 4, 5 }κ°€ 졜고의 μ§‘ν•©μž…λ‹ˆλ‹€.

μ§‘ν•©μ˜ μ›μ†Œμ˜ 개수 nκ³Ό λͺ¨λ“  μ›μ†Œλ“€μ˜ ν•© sκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 졜고의 집합을 return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œμ‚¬ν•­

졜고의 집합은 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ 1차원 λ°°μ—΄(list, vector) 둜 return ν•΄μ£Όμ„Έμš”.
λ§Œμ•½ 졜고의 집합이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ— 크기가 1인 1차원 λ°°μ—΄(list, vector) 에 -1 을 μ±„μ›Œμ„œ return ν•΄μ£Όμ„Έμš”.
μžμ—°μˆ˜μ˜ 개수 n은 1 이상 10,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
λͺ¨λ“  μ›μ†Œλ“€μ˜ ν•© sλŠ” 1 이상, 100,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ μ˜ˆμ‹œ

nssection
29[4, 5]
21[-1]
28[4, 4]

풀이

문제λ₯Ό ν•΄κ²°ν•˜λ©΄μ„œ μ›μ†Œλ“€μ˜ 곱을 μ΅œλŒ€λ‘œ λ§Œλ“œλŠ” κ·œμΉ™μ„ λ°œκ²¬ν–ˆλ‹€.

  1. μ£Όμ–΄μ§„ ν•© sλ₯Ό n으둜 λ‚˜λˆ„μ—ˆμ„ λ•Œμ˜ λͺ«μ„ λͺ¨λ“  μ›μ†Œμ— κ· λ“±ν•˜κ²Œ ν• λ‹Ήν•œλ‹€.

  2. λ‚˜λ¨Έμ§€ 만큼의 μ›μ†Œμ— 1을 더해쀀닀.

    function solution(n, s) {
       // n개의 μžμ—°μˆ˜λ‘œ 합이 sκ°€ λ˜λ„λ‘ ν•  수 μ—†λŠ” 경우
       if (s < n) return [-1];
    
       // 각 μ›μ†Œμ˜ κΈ°λ³Έ κ°’ (λͺ«)
       const share = Math.floor(s / n);
    
       // λ‚˜λ¨Έμ§€ κ°’
       const remainder = s % n;
    
       // 각 μ›μ†Œλ₯Ό share둜 μ΄ˆκΈ°ν™”ν•œ 배열을 생성
       const answer = Array(n).fill(share);
    
       // λ‚˜λ¨Έμ§€λ§ŒνΌ λ°°μ—΄μ˜ λμ—μ„œλΆ€ν„° 1μ”© λ”ν•΄μ€Œ
       for (let i = 0; i < remainder; i++) {
           answer[n - 1 - i]++;
       }
    
       return answer;
    }

λŠλ‚€μ  😸

μ˜€λžœλ§Œμ— μ½”ν…Œλ₯Ό ν‘Έλ‹ˆ λ‚΄ λ¨Έλ¦¬λŠ” ν›ˆμ΄λ³΄λ‹€ 돌머리인 것을 λŠκΌˆλ‹€.
μ•žμœΌλ‘œ μ½”ν…Œλ₯Ό μ—΄μ‹¬νžˆ ν’€μ–΄λ³΄μž!!!

profile
laonlaon

0개의 λŒ“κΈ€