๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿƒ algorithm/programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 3 - ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ

by HandHand 2021. 3. 1.

๋ฌธ์ œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ

ํ’€์ด ๊ณผ์ •

์ž์—ฐ์ˆ˜ n ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ดํ•ฉ์ด S๊ฐ€ ๋˜๋ฉฐ ๋™์‹œ์— ๊ฐ ์›์†Œ์˜ ๊ณฑ์ด ์ตœ๋Œ€์ธ ์ง‘ํ•ฉ์„ ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ํ•ฉ S๊ฐ€ 1์–ต์ด๊ณ  ์ž์—ฐ์ˆ˜ n์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 10,000 ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์กฐํ•ฉ์„ ๋งŒ๋“ค์–ด๋ณด๋Š” ๋ฐฉ๋ฒ•์€ ์‹œ๊ฐ„๋‚ด์— ์ˆ˜ํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ข€ ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ์š”? ๋ฐ”๋กœ ํƒ์š•์ ์ธ ์„ ํƒ ์œผ๋กœ ์ตœ์ ์˜ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

์šฐ์„  ์ด k ๊ฐœ์˜ j ํ•ฉ์ด S ๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

j j j ... j => ์ด k ๊ฐœ์ด๋ฉฐ ํ•ฉ์ด S, ๋”ฐ๋ผ์„œ j\*k = S

ํ•ฉ์ด S๊ฐ€ ๋˜๋Š” ์ˆซ์ž์˜ ์กฐํ•ฉ์€ ์ƒ๋‹นํžˆ ๋‹ค์–‘ํ•˜๋ฏ€๋กœ ์ด๋ฒˆ์—๋Š” j์— ์ž„์˜์˜ ์–‘์˜ ์ •์ˆ˜ l ๋งŒํผ ๊ฐ’์ด ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋”ฐ์ ธ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

j-l j j j .... j+l => ํ•ฉ์€ ์—ฌ์ „ํžˆ S

์ด ๊ฒฝ์šฐ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ์ด S ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ์›์†Œ์—์„œ l ๋งŒํผ ๊ฐ์†Œํ–ˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ์›์†Œ์—์„œ l ๋งŒํผ ๊ฐ’์ด ๋”ํ•ด์กŒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ์›์†Œ๋ฅผ ๊ณฑํ–ˆ์„ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

๊ธฐ์กด์—๋Š” j*k ์˜€์ง€๋งŒ ๋‘ ์›์†Œ์˜ ๊ฐ’์ด ๋‹ฌ๋ผ์ ธ์„œ (j-l)(j+l)(j*(k-2)) ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋‘ ์›์†Œ๋งŒ ๋น„๊ตํ•˜์ž๋ฉด j^2-l^2 < j^2 ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฐ’์ด ๊ท ๋“ฑํ•œ ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ๊ฐ€ ๋ชจ๋“  ์›์†Œ์˜ ๊ณฑ์ด ๋” ํฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ์›์†Œ๋ฅผ ์ตœ๋Œ€ํ•œ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•ด์ค˜์•ผํ•œ๋‹ค ๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ• ๋•Œ๋Š” S๋ฅผ n์œผ๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ n ๊ฐœ ๋งŒํผ ํ• ๋‹นํ•œ ๋’ค S ์—์„œ n์„ ๋‚˜๋ˆด์„๋•Œ ๋ฐœ์ƒํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ฐ ์›์†Œ์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„ ์ฝ”๋“œ ์ž์ฒด๋Š” ์งง์•˜์ง€๋งŒ ๋งŽ์€ ๊ฒƒ์„ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ


def solution(n, s):
    if s < n:
        return [-1]

    quo, remain = divmod(s, n)
    answer = [quo] * n

    # ๋‚˜๋จธ์ง€๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•œ๋‹ค
    idx = n-1
    for i in range(remain):
        answer[idx - i] += 1

    return answer
๋ฐ˜์‘ํ˜•

๐Ÿ’ฌ ๋Œ“๊ธ€