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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - (Level3)์ตœ๊ณ ์˜ ์ง‘ํ•ฉ

by ์ฃผ๋ฐœ2 2020. 3. 17.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/12938

 

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

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

programmers.co.kr

์ฝ”๋“œ

import java.util.*;

class Solution {
  public int[] solution(int n, int s) {
      if(n > s)
          return new int[]{-1};
      
      int[] answer = new int[n];
      for(int i=0; i<answer.length; i++)
          answer[i] = s/n;

      for(int i=0; i<s%n; i++)
          answer[i] ++;
      
      Arrays.sort(answer);
      
      return answer;
  }
}

ํ’€์ด

๋ฌธ์ œ์™€ ์˜ˆ์ œ๋“ค์„ ๋ณด๊ณ  ์ง๊ด€์ ์œผ๋กœ ์ ‘๊ทผํ–ˆ๋‹ค. 

๊ณฑ์ด ์ตœ๋Œ€์ธ ์›์†Œ๋ฅผ ๋ฆฌํ„ดํ•ด์•ผํ•˜๋Š”๋ฐ, ์˜ˆ์ œ๋“ค์„ ๋ณด๋ฉด ์ง์ง€์€ ๊ฐ’๋“ค์ด ๊ฐ€์žฅ ํฐ ์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ฃผ์–ด์ง„ s์˜ ํ•ฉ์„ n๊ฐœ๋กœ ๋‚˜ํƒ€๋‚ผ๋•Œ, ์ผ๋‹จ s๊ฐ€ n์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ , ๋‚˜๋จธ์ง€ ๋งŒํผ ๊ฐ’์„ ๋”ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ํ’€์ด๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

♠ ๋งŒ์•ฝ n>s ์ธ๊ฒฝ์šฐ - ์ง‘ํ•ฉ์˜ ํ•ฉ๋ณด๋‹ค ์ž์—ฐ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€๊ฒฝ์šฐ

    โ–ถ ์œ„์˜ ๊ฒฝ์šฐ n๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋ฅผ ์ด์šฉํ•ด s์˜ ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฏ€๋กœ -1์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

♠ ๊ทธ ์™ธ์˜๊ฒฝ์šฐ ๋ฆฌํ„ดํ•  ๋ฐฐ์—ด answer์˜ ๋ชจ๋“ ๊ฐ’์— s/n ์„ ์ €์žฅํ•œ๋‹ค.

 

♠ ๊ทธ ํ›„ s%n ๋งŒํผ answer ๋ฐฐ์—ด์˜ ๋ชจ๋“  ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 

 

์œ„ ํ’€์ด๊ฐ€ ๋ฌด์Šจ์†Œ๋ฆฌ๋ƒ๋ฉด, ๋‹ค์–‘ํ•œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

n = 3 , s = 13 ์ธ๊ฒฝ์šฐ ์„ธ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ•ฉ์˜ 13์ด ๋˜๊ณ , ๊ณฑ์ด ์ตœ๋Œ€์ธ ์›์†Œ 3๊ฐœ๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•˜๋Š”๋ฐ,

๋จผ์ € ๋ฆฌํ„ดํ•ด์•ผ ํ•˜๋Š” 3๊ฐœ์˜ ๊ฐ’์€ 4, 4, 5 ์ด๋‹ค.

 

 - s/n ===> 13/3 = 4 ์ด๋‹ค. ๋”ฐ๋ผ์„œ answer ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— 4๋ฅผ ์ €์žฅํ•œ๋‹ค.

 - answer = [4, 4, 4]

 - s%n ===> 13%3 = 1 ์ด๋‹ค. ๋”ฐ๋ผ์„œ answer ๋ฐฐ์—ด์˜ ํ•œ๊ฐœ์˜ ๊ฐ’๋งŒ 1์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 - ๊ทธ๋Ÿผ answer = [4, 4, 5] ๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€๊ฐ’์ด๋‹ค.

 

 

n = 4, s = 15 ์ธ๊ฒฝ์šฐ๋„ ๋ณด์ž.

 - s/n ===> 3์ด๋‹ค. ๋”ฐ๋ผ์„œ answer ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— 3์„ ์ €์žฅํ•œ๋‹ค.

 - answer = [3, 3, 3, 3]

 - s%n ===> 3์ด๋‹ค. ๋”ฐ๋ผ์„œ answer ๋ฐฐ์—ด์˜ ์„ธ ๊ฐœ์˜ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 - ๊ทธ๋Ÿผ answer = [4, 3, 3, 3]์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€๊ฐ’์ด๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋ฏ€๋กœ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

(๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ , ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ถ€ํ„ฐ +1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.)

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€