๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '์ตœ๊ณ ์˜ ์ง‘ํ•ฉ' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 2. 22.
728x90
๋ฐ˜์‘ํ˜•
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

"""
์ž์—ฐ์ˆ˜ 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
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€