ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋๋ค์ ๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ๋ช ๋ณดํธ๋ ์์์ ํ ๋ฒ์ ์ต๋ 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;
}
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์์ ํ์]์นดํซ (0) | 2021.10.10 |
---|---|
[์๋ผํ ์คํ ๋ค์ค์ ์ฒด]์์์ฐพ๊ธฐ (0) | 2021.10.09 |
[์ ํด๋ฆฌ๋ ํธ์ ๋ฒ]์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.09.03 |
[๋ ์ ์๊ณ ๋ฆฌ์ฆ]๋์ ๊ตํ (0) | 2021.08.17 |
[LIS]์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด (0) | 2021.08.16 |