728x90
๋ฐ์ํ
"""
์์ฐ์ n ๊ฐ๋ก ์ด๋ฃจ์ด์ง ์ค๋ณต ์งํฉ(multi set, ํธ์์ ์ดํ์๋ "์งํฉ"์ผ๋ก ํต์นญ) ์ค์
๋ค์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์งํฉ์ ์ต๊ณ ์ ์งํฉ์ด๋ผ๊ณ ํฉ๋๋ค.
1. ๊ฐ ์์์ ํฉ์ด S๊ฐ ๋๋ ์์ ์งํฉ
2. ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด์ ๊ฐ ์์์ ๊ณฑ ์ด ์ต๋๊ฐ ๋๋ ์งํฉ
์๋ฅผ ๋ค์ด์ ์์ฐ์ 2๊ฐ๋ก ์ด๋ฃจ์ด์ง ์งํฉ ์ค ํฉ์ด 9๊ฐ ๋๋ ์งํฉ์ ๋ค์๊ณผ ๊ฐ์ด 4๊ฐ๊ฐ ์์ต๋๋ค.
{ 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 }
๊ทธ์ค ๊ฐ ์์์ ๊ณฑ์ด ์ต๋์ธ { 4, 5 }๊ฐ ์ต๊ณ ์ ์งํฉ์
๋๋ค.
์งํฉ์ ์์์ ๊ฐ์ n๊ณผ ๋ชจ๋ ์์๋ค์ ํฉ s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
์ต๊ณ ์ ์งํฉ์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
"""
def solution(n, s):
if n>s:
return [-1]
share = s//n
remainder = s%n
return sorted([share + 1 if (remainder:= remainder-1)>=0 else share for _ in range(n)])
"""
๊ฐ์ฅ ๊ณฑ์ด ์ปค์ง๋ ค๋ฉด ๊ณฑ๋ค์ ๊ฐ์ด ๊ท ๋ฑํด์ผํ๋ค๊ณ ์๊ฐํ๋ค.
n=2, s=17์ ์๋ก ๋ค๋ฉด 1x16๋ณด๋ค 8x9๊ฐ ๋ ํฌ๋ค.
n=3, s=19๋ฅผ ์๋ก ๋ค๋ฉด 1x1x17, 2x2x15๋ณด๋ค 6x6x7์ด ๋ ํฌ๋ค.
๊ทธ๋์ ์๊ฐํ ๋ฐฉ์์ด s๋ฅผ n์ผ๋ก ๋๋ ๋ชซ๋งํผ ๋ฆฌ์คํธ์ ๋ฃ๊ณ
๋๋จธ์ง๋งํผ ํ ์์๋ง๋ค 1์ ๋ํด์ฃผ๋ ๊ฒ์ด์๋ค.
n=2, s=17 -> 17//2 = 8, 17%2 = 1์ด๋ค. [8, 8+1]
n=3, s=19 -> 19//3 = 6, 19%3 = 1์ด๋ค. [6, 6, 6+1]
์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฐ์นํด์ผํด์ sort๋ฅผ ํ์๊ณ
remainder์์ 1์ ๋นผ์ค ๋ค ๊ทธ remainder์ 0์ ๋น๊ตํ์ฌ ์์ง ๋๋จธ์ง๊ฐ ๋จ์์์ผ๋ฉด
๋ชซ์ 1์ ๋ํด์ ๊ฐ์ ๋ฃ์ด์ฃผ์๊ณ ๋๋จธ์ง๊ฐ ์์ผ๋ฉด 1์ ๋ํด์ฃผ์ง ์๋ share๊ฐ๋ง ๋ฃ์ด์ฃผ์๋ค.
"""
728x90
๋ฐ์ํ
๋๊ธ