๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“šAlgorithm ------------/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

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


ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • ๋ฌธ์ œ ์„ค๋ช…์— ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์ด ์žˆ๋Š”๋ฐ, ๊ทธ์ค‘ ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์ธ "์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ๊ฐ ์›์†Œ์˜ ๊ณฑ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ์ง‘ํ•ฉ"์ด๋ผ๋Š” ๊ฒƒ์— ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
  • ์›์†Œ์˜ ๊ณฑ์ด ์ตœ๋Œ€ → ๋‚˜๋ˆ—์…ˆ์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ
  • ์›์†Œ๋“ค์˜ ํ•ฉ(s)์„ ์›์†Œ์˜ ๊ฐœ์ˆ˜(n)์œผ๋กœ ๋‚˜๋ˆ  ๋ชซ์„ ๊ตฌํ•˜๋ฉด ์›์†Œ 1๊ฐœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ทธ๋Ÿฌ๋ฉด s์—์„œ ์œ„์—์„œ ๊ตฌํ•œ ์›์†Œ 1๊ฐœ๋ฅผ ๋นผ์ฃผ๋ฉด (s -= div) ๋‚˜๋จธ์ง€ ์›์†Œ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ
  • n > s์ธ ๊ฒฝ์šฐ(์˜ˆ์‹œ์˜ n=2, s=1)์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋„ ์ถ”๊ฐ€ํ•ด ์ฃผ๋ฉด ๋จ

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

vector<int> solution(int n, int s) {
    vector<int> answer;
    if(n>s) {
        answer.push_back(-1); 
        return answer;
    }

    while(n > 0)
    {
        int div = s/n;
        answer.push_back(div);
        s -= div;
        n--;
    }
    
    sort(answer.begin(), answer.end());
    return answer;
}