Algorithm

[CodeKata] 프로그래머스(Lv3) : 최고의 집합

ttaeng_99 2022. 3. 12. 06:08
반응형

 

🥋 Oooth More!! (Level 3) 

 

 

🧮 풀이

function solution(n, s) {
  if (n > s) return [-1]
  const num = Math.floor(s/n);
  const count = s % n;
  return [...new Array(n-count).fill(num), ...new Array(count).fill(num+1)]
}
  • s가 n보다 작다면 제일 작은 자연수인 1들의 합으로 s가 나올 수 없다. 이 때는, [-1] 을 반환한다.
  • num각 원소의 곱이 최대가 되는 원소값 중 작은값이다. n = 2, s = 9 일 때, [4,5] 에서 4에 해당하는 것이다.
  • count최고의 집합에서, num+1 의 개수이다. s를 n으로 나눈 나머지 수만큼 num들에 1을 더하면 된다. (최고의 집합은 num, num+1 들로 이루어져야 곱이 최대가 될 수 있다.)
  • num을 (n - count) 개, num+1은 count 개를 포함한 배열을 최종 반환한다.

 

🖇 리뷰

단순하게 s를 최대한 n등분한 숫자들의 배열이 정답이 될거라 생각했고 이 풀이가 맞게 되었다.

 

 

반응형