Notice
Recent Posts
Recent Comments
Link
ยซ   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
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ (js) ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ (js)

Lennon 2022. 2. 10. 12:33
728x90
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/42583?language=javascript 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ

ํŠธ๋Ÿญ ์—ฌ๋Ÿฌ ๋Œ€๊ฐ€ ๊ฐ•์„ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ์ผ์ฐจ์„  ๋‹ค๋ฆฌ๋ฅผ ์ •ํ•ด์ง„ ์ˆœ์œผ๋กœ ๊ฑด๋„ˆ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŠธ๋Ÿญ์ด ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋ ค๋ฉด ์ตœ์†Œ ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฆฌ์—๋Š” ํŠธ๋Ÿญ์ด ์ตœ๋Œ€ bridge_length๋Œ€ ์˜ฌ๋ผ๊ฐˆ

programmers.co.kr

function solution(bridge_length, weight, truck_weights) {
  truck_weights = truck_weights.map((v) => [v, 0]);
  const passingTruck = [];
  const passedTruck = [];

  const len = truck_weights.length;
  let count = 1;

  while (passedTruck.length !== len) {
    count++;

    if (truck_weights.length > 0) {
      passingTruck.push(truck_weights.shift());
    }
    
    const truckWeight = passingTruck.reduce((prev, cur) => prev + cur[0], 0);

    if (truckWeight > weight) {
      truck_weights.unshift(passingTruck.pop());
    }

    passingTruck.map((v) => v[1]++);

    if (passingTruck[0][1] === bridge_length) {
      passedTruck.push(passingTruck.shift());
    }
  }

  return count;
}

 

truck_weights [7,4,5,6]์„ [ [7,0], [4,0], [5,0], [6,0] ] ํ˜•ํƒœ๋กœ ๋ฐ”๊พผ๋‹ค.

 

passingTruck 

์ง€๋‚˜๊ฐ€๋Š” ํŠธ๋Ÿญ์„ ๋„ฃ๋Š” ๋ฐฐ์—ด

 

passedTruck

ํŠธ๋Ÿญ์ด ์ง€๋‚˜๊ฐ€๋ฉด ๋„ฃ๋Š” ๋ฐฐ์—ด

 

count

์‹œ๊ฐ„์„ ์žฌ๋Š” ๋ณ€์ˆ˜

 

while ๋‚ด๋ถ€ ๋กœ์ง

count๋Š” ๊ณ„์† 1์”ฉ ๋”ํ•ด์ค€๋‹ค.

 

1. truck_weights ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด truck_weight ์ž…๋ ฅ ๋ฐฐ์—ด์—์„œ shift ํ•˜์—ฌ passingTruck์— push ํ•œ๋‹ค.

 

2. passingTruck์˜ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ํŠธ๋Ÿญ๋“ค์˜ ๋ฌด๊ฒŒ(truckWeight)๋ฅผ ๊ตฌํ•œ๋‹ค.

 

3. truckWeight๊ฐ€ weight๋ฅผ ๋„˜์œผ๋ฉด passingTruck ๋ฐฐ์—ด์—์„œ pop์„ ํ•˜๊ณ , ๊ทธ ๊ฐ’์„ ๋‹ค์‹œ truck_weights ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

 

4. passingTruck ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ [1] ๊ฐ’์— 1์”ฉ ๋”ํ•œ๋‹ค. ex) [7, 0] => [7, 1]

 

5. ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์˜ค๋ฏ€๋กœ passingTruck[0][1] ๊ฐ’์ด bridge_length๊ฐ’์ด ๋˜๋ฉด

    passingTruck์—์„œ shift ํ•˜๋ฉฐ ๊ทธ ๊ฐ’์„ passedTruck์— push ํ•œ๋‹ค.

 

6. passedTruck์˜ ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ ์ฒ˜์Œ ์ œ๊ณต๋œ truck_weights ๊ธธ์ด๊ฐ€ ๋˜๋ฉด while๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
Comments
Lennon FEFrontend Technology Blog