์ด๋ ต์ง ์์์ง๋ง, ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ํ๋ ๊ณผ์ ์ด ์ข ๊ฑธ๋ ธ์ต๋๋ค. ์ ์ฝ์กฐ๊ฑด๋ค์ ํ์ด๊ฐ๋ ๊ณผ์ ์ด ์ ์๋ฏธ ํ์ต๋๋ค.
์ ์ฝ์กฐ๊ฑด๊ณผ ๋ช๊ฐ์ง๊ฐ ์์ต๋๋ค๋ง, ์นจ์ฐฉํ๊ฒ ํ๋์ฉ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ์ด๊ฐ๋ฉด์ ํ๋ฉด ๋ฌธ์ ์ ๊ทผ์ด ์ฌ์ ์ต๋๋ค.
- ๋ค๋ฆฌ๊ฐ ๊ฒฌ๋ ์ ์๋ ํ์ค์ ์๊ฐํด์ค์ผํฉ๋๋ค.
- ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ๋ค๋ฆฌ์ ๊ธธ์ด๋งํผ ์๊ฐ์ด ์์๋ฉ๋๋ค.(ex.๋ค๋ฆฌ๊ธธ์ด : 2 == 2์ด)
- ๋ค๋ฆฌ๊ธธ์ด๋ณด๋ค ํธ๋ญ์ด ๋ง์ด ์ฌ๋ผ๊ฐ ์ ์์ต๋๋ค.
- ํธ๋ญ์ด ๋ค๋ฆฌ์์ ๋น ์ง๋ ๋์์ ์๋ก์ด๊ฒ์ด ๋ค์ด์์ผํฉ๋๋ค.
ํ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ๋๋ค.
๋ค๋ฆฌ์ ์ฌ๋ผ๊ฐ ํธ๋ญ๊ณผ ๋ค์ด์ฌ ํธ๋ญ์ ํฉ์ด ๋ค๋ฆฌํ์ค๋ณด๋ค ์์ผ๋ฉด ํ์ ๋ฃ์ด์ค๋๋ค.
๋ค๋ฆฌํ์ค๋ณด๋ค ํธ๋ญ๋ค์ ๋ฌด๊ฒ๊ฐ ํฌ๋ค๋ฉด ํ์ 0์ ๋ฃ์ด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ 1์ด์ฉ ์ฌ๋ ค์ค๋๋ค.
ํ๊ฐ ๋ค๋ฆฌ๊ธธ์ด์ ๊ฐ์์ง๋ฉด ๋ค๋ฆฌ๋์ ๋์ฐฉํ๊ฒ์ด๋ ๋ค๋ฆฌ์ ์ฌ๋ผ๊ฐ ํธ๋ญ ์ฆ, ํ์์ poll()์ ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ค๋ฆฌ์ ์ฌ๋ผ๊ฐ ์ด ํธ๋ญ์ ๋ฌด๊ฒ์์ ๋นผ์ค๋๋ค.
๋ฐ๋ณตํ๋ฉด ๋ง์ง๋ง ํธ๋ญ์ด ๋ค์ด์์๋ ๋ฐ๋ณต๋ฌธ์ด ๋๋ฉ๋๋ค.
๋ฐ๋ผ์ +๋ค๋ฆฌ๊ธธ์ด๋ฅผ ํด์ฃผ๋ฉด ๋ฌธ์ ํด๊ฒฐ์ ๋๋ค.for(int i = 0 ; i < truck_weights.length ;) { if(bridge.size() < bridge_length) { if(weight >= sum + truck_weights[i]) {// ๋ค๋ฆฌํ์ค > ํธ๋ญ ์ด ๋ฌด๊ฒ + ๋ค์ด์ฌํธ๋ญ bridge.add(truck_weights[i]); //ํ์ ํธ๋ญ ๋ฃ์ด์ค๋๋ค. sum += truck_weights[i];//ํธ๋ญ์ด๋ฌด๊ฒ์ ํธ๋ญ์ ๋ํด์ค๋๋ค. i++; //๋ค์ ํธ๋ญ }else { bridge.add(0);//๋ค๋ฆฌํ์ค์ด ๋์์ผ๋ฉด 0์ ๋ฃ์ด์ค๋๋ค. } answer++;//์ด๋ค๊ฒฝ์ฐ์๋ ํํ ๋น 1์ด์ฉ ์ฆ๊ฐํฉ๋๋ค. }else sum -= bridge.poll(); //ํธ๋ญ์ด ๋น ์ง๊ณผ ๋์์ ๋ค์ด์์ผํ๊ธฐ ๋๋ฌธ์ ๋น ์ง๋ ์์ ์ ์ด๋ฅผ ์ฆ๊ฐ์์ผ์ฃผ์ง ์์ต๋๋ค. } return answer+bridge_length;//๋ง์ง๋ง ํธ๋ญ์ด ๋ค์ด์ค๋ฉด ๋ฐ๋ณต๋ฌธ์ด ๋๋ฉ๋๋ค. //๋ฐ๋ผ์ ๋ค๋ฆฌ๊ธธ์ด๋งํผ ์์์๊ฐ์ด ๋์ด๋ฉ๋๋ค. }