ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

๋ฌด์ธ๋„์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌ๋ช…๋ณดํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ช…๋ณดํŠธ๋Š” ์ž‘์•„์„œ ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 2๋ช…์”ฉ ๋ฐ–์— ํƒˆ ์ˆ˜ ์—†๊ณ , ๋ฌด๊ฒŒ ์ œํ•œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ [70kg, 50kg, 80kg, 50kg]์ด๊ณ  ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์ด 100kg์ด๋ผ๋ฉด 2๋ฒˆ์งธ ์‚ฌ๋žŒ๊ณผ 4๋ฒˆ์งธ ์‚ฌ๋žŒ์€ ๊ฐ™์ด ํƒˆ ์ˆ˜ ์žˆ์ง€๋งŒ 1๋ฒˆ์งธ ์‚ฌ๋žŒ๊ณผ 3๋ฒˆ์งธ ์‚ฌ๋žŒ์˜ ๋ฌด๊ฒŒ์˜ ํ•ฉ์€ 150kg์ด๋ฏ€๋กœ ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์—ฌ ๊ฐ™์ด ํƒˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ช…๋ณดํŠธ๋ฅผ ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ตฌ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด people๊ณผ ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ limit๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ตฌ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ตฌ๋ช…๋ณดํŠธ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๋ฌด์ธ๋„์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ์€ 1๋ช… ์ด์ƒ 50,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ ์‚ฌ๋žŒ์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” 40kg ์ด์ƒ 240kg ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์€ 40kg ์ด์ƒ 240kg ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์€ ํ•ญ์ƒ ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ ์ค‘ ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค ํฌ๊ฒŒ ์ฃผ์–ด์ง€๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌ์ถœํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

peoplelimitreturn

[70, 50, 80, 50] 100 3
[70, 80, 50] 100 3

 

๋ฌธ์ œํ’€์ด

 

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•œ ๋’ค์—, ํ•ด๋‹น ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒ ๋ฐ ๊ฐ€์‚ฐํ•˜๋ฉฐ limit ๊ฐ’์„ ๋„˜๊ธฐ๋Š”์ง€ ์‹๋ณ„ํ•œ๋‹ค.

 

์ฝ”๋“œ

function solution(people, limit) {
  var answer = 1;
  people.sort((a, b) => a - b);
  let sum = 0;

  for(let x of people) {
    sum += x;
    if(sum > limit) {
        answer++;
        sum = x;
    }
  }

  return answer;
}

 

์˜ค๋‹ต

 

๊ฒฐ๊ณผ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ์ตœ์†Œํ•œ์˜ ํšŸ์ˆ˜๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” (๊ฐ€์žฅ ํฐ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ํฐ ์‚ฌ๋žŒ) + (๊ฐ€์žฅ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ์ž‘์€ ์‚ฌ๋žŒ) ์ด์–ด์•ผ ๋œ๋‹ค.

 

์œ„์— ์—ฐ์‚ฐ์‹๊ณผ ๊ฐ™์ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ ๋ฐฐ์—ด์„ ๋‹จ์ˆœํžˆ ์ˆœํšŒํ•˜๋ฉฐ ์š”์†Œ๋ฅผ ๊ฐ€์‚ฐํ•ด์„œ ์ตœ์†Œ ๋ณดํŠธ ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ๋žŒ ๋ชธ๋ฌด๊ฒŒ ์ง‘ํ•ฉ์—์„œ๋Š” ์ œ๋Œ€๋กœ ๋œ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์—†๋‹ค.

 

๋ฐ˜๋ก€

[40, 40, 50, 60]
0 + 40 = 40 (1) default
40 + 40 = 80 (1)
80 + 50 = 130 (2) x๋ฅผ 50์œผ๋กœ ์ดˆ๊ธฐํ™”
50 + 60 = 110 (3)

 

์‹ค์ œ ํ•„์š”ํ•œ ์ตœ์†Œ ๋ณดํŠธ ๊ฐฏ์ˆ˜๋Š” 2๊ฐœ์ด์ง€๋งŒ ์•ž์„  ๋กœ์ง์œผ๋กœ ํ’€๊ฒŒ ๋˜๋ฉด ์ตœ์†Œ ๊ฐฏ์ˆ˜๋Š” 3๊ฐœ๊ฐ€ ๋‚˜์™€ ์˜ค๋‹ต์ด ๋œ๋‹ค.

 

(๊ฐ€์žฅ ํฐ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ํฐ ์‚ฌ๋žŒ) + (๊ฐ€์žฅ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ์ž‘์€ ์‚ฌ๋žŒ) 

[40, 40, 50, 60]
max = 3, min = 0
40 + 60 = 100 (1) min pt ๊ฐ€์‚ฐ
40 + 50 = 90 (2)

 

ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด์˜ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์˜ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ‘ผ๋‹ค๋ฉด ์ •ํ™•ํ•œ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ํฌ์ธํ„ฐ์˜ ์ฐธ์กฐ๊ฐ’ ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ ์ด๋‹ค.

 

๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋ผ๊ณ  ํ•ด์„œ ๋‹จ์ˆœํžˆ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ •๋ ฌ์„ ํ•  ๋ฟ ์ดํ›„ ์—ฐ์‚ฐ์€ ์ƒ๊ฐ ์—†์ด ์งฐ๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ํˆฌํฌ์ธํ„ฐ ๊ฐœ๋…๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ๋Š” ๋‹ค์†Œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

์ฝ”๋“œ

function solution(people, limit) {
  var answer = 0;
  people.sort((a, b) => a - b);
  let min = 0; //๊ฐ€์žฅ ์ž‘์€ ๋ชธ๋ฌด๊ฒŒ pt
  let max = people.length - 1; //๊ฐ€์žฅ ํฐ ๋ชธ๋ฌด๊ฒŒ pt

  for(let i = max; i >= min; i--) {
    if(people[i] + people[min] > limit) {
      answer++;
    }
    else {
      answer++;
      min++;
    }
  }

  return answer;
}

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ