๋ฌธ์ ์ค๋ช
์์ฐ์ 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 ์ดํ์ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์#1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์#2
์์ฐ์ 2๊ฐ๋ฅผ ๊ฐ์ง๊ณ ๋ ํฉ์ด 1์ธ ์งํฉ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฐ๋ผ์ -1์ด ๋ค์ด์๋ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
์
์ถ๋ ฅ ์#3
์์ฐ์ 2๊ฐ๋ก ์ด๋ฃจ์ด์ง ์งํฉ ์ค ์์์ ํฉ์ด 8์ธ ์งํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ 1, 7 }, { 2, 6 }, { 3, 5 }, { 4, 4 }
๊ทธ์ค ๊ฐ ์์์ ๊ณฑ์ด ์ต๋์ธ { 4, 4 }๊ฐ ์ต๊ณ ์ ์งํฉ์ ๋๋ค.
ํ์ด ์์
function solution(n, s) {
// n์ด s๋ณด๋ค ํฌ๋ค๋ฉด [1,1,1] ๋ ๋ง์กฑํ์ง ๋ชปํ๋ฏ๋ก ๋ถ๊ฐ๋ฅ
if(n > s) return [-1]
// s/n ์ ๊ฐ์ฅ ๊ณ ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ ๊ฐ์ด๋ฏ๋ก n์ ๊ธธ์ด๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์ s/n์ผ๋ก ์ฑ์
const arr = Array(n).fill(Math.floor(s/n))
// ๋๋ ํ ๋๋จธ์ง ๊ฐ์ ์ค๋ฆ์ฐจ ์ ๋ฐฐ์ด์ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๋ฐฐ์ด์ ๋ค์์ ๋ถํฐ +1 ํ๋ฉฐ ์ฑ์์ค
if(s%n) {
for(let i = n-1, more = s%n ; more > 0 ; i --,more--) {
arr[i] = arr[i]+1
}
}
return arr
}