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

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๊ตฌ๋ช…๋ณดํŠธ (42885)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ตฌ๋ช…๋ณดํŠธ

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

programmers.co.kr

 

 

์ ‘๊ทผ๋ฐฉ๋ฒ•

๊ทธ๋ฆฌ๋“œ ๋ฌธ์ œ๋กœ ๊ฐ€์žฅ ์กฐ๊ฑด์— ๊ฐ€๊นŒ์šด ๊ฒฝ์šฐ๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์ฃผ์–ด์ง„ people ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜์—ฌ ์ œ์ผ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๊ณผ ์ œ์ผ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ์„ ํƒํ•˜์—ฌ 
limit๋ณด๋‹ค ์ž‘์œผ๋ฉด ์˜ฎ๊ธฐ๊ณ , limit๋ณด๋‹ค ํฌ๋ฉด ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๋งŒ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

๋ฐฐ์šด์ 

์ฒ˜์Œ ํ’€์ดํ•œ ๋ฌธ์ œ๊ฐ€ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๊ณ„์† ํƒˆ๋ฝํ•˜์˜€๋‹ค.

people.shift๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ œ์ผ ์•ž ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ๊ฒƒ์ด ๋ฌธ์ œ์˜€๋Š”๋ฐ,
๋ฐฐ์—ด์€ ์ œ์ผ ์•ž ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์‹œ Index ๋ฒˆํ˜ธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ง€์ •ํ•ด์ฃผ๋Š” ๋น„ํšจ์œจ์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

๋•Œ๋ฌธ์— people ๋ฐฐ์—ด์„ ์ง์ ‘ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  Index๋ฒˆํ˜ธ๋งŒ ์ฆ๊ฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค.
// ์ฒ˜์Œ ํ’€์ด
// ํšจ์œจ์„ฑ ํƒˆ๋ฝ

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

  while (people.length) {
    if (people[0] + people[people.length - 1] > limit) {
      people.pop();
      answer++;
    } else {
      people.pop();
      people.shift();
      answer++;
    }
  }

  return answer;
}
// ์ˆ˜์ •ํ•œ ํ’€์ด
// ํšจ์œจ์„ฑ ํ†ต๊ณผ

function solution(people, limit) {
    var answer = 0; 
    let lightPerson = 0;
    let heavyPerson = people.length - 1;
    people.sort((a,b) => a-b);
    
    while(lightPerson <= heavyPerson){
        if(people[lightPerson] + people[heavyPerson] > limit){
            heavyPerson--;
            answer++;
        }else{
            heavyPerson--;
            lightPerson++;
            answer++
        }
    }

    return answer;
}