๋ฌธ์ ์ค๋ช
์์ฐ์ 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 ์ดํ์ ์์ฐ์์ ๋๋ค.
n | s | result |
2 | 9 | [4, 5] |
2 | 1 | [-1] |
2 | 8 | [4, 4] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์#1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์#2
์์ฐ์ 2๊ฐ๋ฅผ ๊ฐ์ง๊ณ ๋ ํฉ์ด 1์ธ ์งํฉ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฐ๋ผ์ -1์ด ๋ค์ด์๋ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
์ ์ถ๋ ฅ ์#3
์์ฐ์ 2๊ฐ๋ก ์ด๋ฃจ์ด์ง ์งํฉ ์ค ์์์ ํฉ์ด 8์ธ ์งํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ 1, 7 }, { 2, 6 }, { 3, 5 }, { 4, 4 }
๊ทธ์ค ๊ฐ ์์์ ๊ณฑ์ด ์ต๋์ธ { 4, 4 }๊ฐ ์ต๊ณ ์ ์งํฉ์ ๋๋ค.
ํ์ด ์ฝ๋
def solution(n, s):
if n > s:
return [-1]
mid = s//n
answer = [mid for _ in range(n)]
rest = s - (mid * n)
right = n-1
while rest != 0:
answer[right] += 1
right -= 1
rest -= 1
return answer
์ฝ๋ ๊ตฌํ ์์ฒด๋ ๋จ์ํ์ง๋ง, level3๋ผ ์๊ฐ์ด ์กฐ๊ธ ํ์ํ ๋ฌธ์ ์๋ค.
๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ก ํ์ด๋ฅผ ํ๋ค.
๋ฌธ์ ๋ฅผ ์ฒ์ ๋ณด๊ณ , n์ด 10,000๊ฐ, s๊ฐ 1์ต์ธ ๊ฒ์ ๋ณด๊ณ ์๊ฐ๋ณต์ก๋๊ฐ ๋์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ผ ํ๋จํ๋ค.
n์ด ๋ ๊ฐ์ธ ๊ฒฝ์ฐ๋ง ๋ณด๋ฉด ํธํํ ์๊ฐ์ ํ ์ง ๋ชจ๋ฅด๋, ์๋ก์ด ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ค๋นํด ๊ด์ฐฐํด๋ณด์๋ค.
if) n=3, s=9์ธ ๊ฒฝ์ฐ
๋์ฌ ์ ์๋ ์งํฉ๊ณผ ์งํฉ ์์ ์ ์ฒด์ ๊ณฑ์ ํ์ธํด๋ณด์.
๋์ฌ ์ ์๋ ์งํฉ : {1,2,6} / {1,3,5} / {1,4,4} / {2,2,5} / {2,3,4} / {3,3,3}
์งํฉ ์์ ์ ์ฒด์ ๊ณฑ : {12} / {15} / {8} / {20} / {24} / {27}
์ด๋์ ๋ ์งํฉ๊ณผ ๊ณฑ์ ๋น๊ตํด๋ณด๋ฉด, n๊ฐ์ ์์์ ๊ฐ ๋ถํฌ๊ฐ ๊ณ ๋ฅด๋ฉด ๊ณ ๋ฅผ ์๋ก ์งํฉ ์์ ์ ์ฒด์ ๊ณฑ์ด ๊ฐ์ฅ ํฐ ๊ฒ์ ์ ์ ์๋ค!
๋ฐ๋ผ์ ์ด ์ ์ ์ด์ฉํด ๊ทธ๋ฆฌ๋ํ๊ฒ ํ์ด๋ณด์.
๋ถํฌ๊ฐ ๊ณ ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ๋ค.
1) s//n์ด๋ผ๋ ๋์ผํ ๊ฐ n๊ฐ๋ฅผ ๋ฐฐ์ด์ ์ฝ์ ํ๋ค.
2) ๋ฐฐ์ด์ ์ ์ฒด ํฉ์ด s๋ฅผ ๋ง์กฑํ์ง ๋ชปํ๋ค๋ฉด, ์ถ๊ฐ๋ก ๋ฐฐ์ด ์์ํด ๋ ํด์ฃผ์ด์ผ ํ ๊ฐ rest๋ฅผ ๊ตฌํ๋ค.
3) rest๋ฅผ ๊ณ ๋ฅด๊ฒ ๋๋์ด์ผ ํ๊ณ , ์ถํ์ ์ ๋ ฌํ ํ์๊ฐ ์๋๋ก ๋ฐฐ์ด์ ๋ค์์๋ถํฐ 1์ฉ ๋ํ๊ณ ์์ผ๋ก ์์น๋ฅผ ์ฎ๊ธด๋ค.
4) s//n์ ์ฐ์ฐ ํน์ฑ์, 0๋ฒ ์ธ๋ฑ์ค ๊ฐ๊น์ง 1์ ๋ํ ์ผ์ด ์์ผ๋ฏ๋ก, while ๋ฌธ ์กฐ๊ฑด์ rest != 0 ์ผ๋ก ์ถฉ๋ถํ๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ์ ์๊ฐ์ด๋ (level2, python) (0) | 2022.09.09 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ]์บ์ (level2, python) (0) | 2022.09.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ๋์งํ (level2, python) (0) | 2022.09.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (level2, python) (0) | 2022.09.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (level2, python) (0) | 2022.09.09 |