did_story
[ํ๋ก๊ทธ๋๋จธ์ค / JAVA] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ ๋ณธ๋ฌธ
Algorithm๐/ํ๋ก๊ทธ๋๋จธ์ค(Programmers)
[ํ๋ก๊ทธ๋๋จธ์ค / JAVA] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
์ด์ ์์ 2026. 5. 14. 13:43
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ ์ฌ์๊ฐ ์น๊ตฌ๊ฐ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ๊ด๋ จํด์ ์ง๋ฌธ์ ํด์ ๋ฌธ์ ๋ฅผ ์ ํ๊ฒ ๋์๋ค.
์ง๋ฌธํ๋๋ฐ ๋ด๊ฐ ์ํ๊ณ ๋๋ตํ๋ฉด, ์ด์ํ ๋๋ต ํ ๊ฒ์ด ๋ถ๋ช ํ์ง ์์๊ฐ?!!!?!?
1. ์ ๊ทผ
๋ณด์๋ง์ ์๊ฐํ๊ฒ.
- ๊ฒฝ๊ณผ์๊ฐ์ด ์ ๋ฌ๋ผ์ง๋ ๊ฒ์ผ๊น?
- ์ bridge์ ์ฌ๋ผ๊ฐ๋ weight ์ ๋ฌด๊ฒ๊ฐ ํ์ ๋์ด์๊ตฌ๋. ⇒ ์ ์ญ์ผ๋ก weight์ ํฉ์ฐํด์ผ์ง.
- ์ ํ์กฐ๊ฑด์ ์ด๋ป๊ฒ ๋๋๊ฐ??
- bridge_length์ ์ด์ ์ง์ ์ ์๊ด์๋๊ฒ ⇒ bridge์ ์ ๋์ค๋ truck๋ฅผ ๋งค์ด ํ์ธํด์ผ๊ฒ ๋ค.
2. ํ์ด
- ์ด ๋ง๋ค ๋์ค๋ ํธ๋ญ์ด ์๋์ง ํ์ธํด๋ณด์ ⇒ Deque ์จ์ผ์ง
- ์ฌ๋ผ๊ฐ์๋ ๋ฌด๊ฒ๋ ์ ์ญ๋ณ์๋ก ํฉ์ฐํด์ ๊ด๋ฆฌํ์.
import java.util.ArrayDeque;
import java.util.Deque;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Deque<Integer> states_bridge = new ArrayDeque<Integer>();
int weigth_on_bridge = 0;
for (int i = 0 ; i < bridge_length ; i++) states_bridge.add(0);
int idx = 0;
while(idx < truck_weights.length || !states_bridge.isEmpty()) {
int truck = states_bridge.pop();
if (truck != 0) weigth_on_bridge -= truck;
if(idx < truck_weights.length){
if (weigth_on_bridge + truck_weights[idx] <= weight) {
states_bridge.add(truck_weights[idx]);
weigth_on_bridge += truck_weights[idx];
idx++;
} else {
states_bridge.add(0);
}
}
answer++;
}
return answer;
}
}
์ด๋ณด๋ค ๋ ์ข์ ์ฝ๋, ์ข์ ์ ๊ทผ์ด ๋ง์๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค. ๊ทธ๋ผ์๋ ์ํ์์๋ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ํธ๋๊ฒ ์ค์ํ๋, ๋ณธ์ธ์ ๋์ ์ ๋ค์ด์ค๋ ๋ฐฉ๋ฒ์ ๊ณ ์ํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
'Algorithm๐ > ํ๋ก๊ทธ๋๋จธ์ค(Programmers)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค / JAVA] ์ด๋ชจํฐ์ฝ ํ ์ธํ์ฌ. (0) | 2025.10.12 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค / JAVA] ํ ํธ์ง (0) | 2025.10.09 |
| [ํ๋ก๊ทธ๋๋จธ์ค / JAVA] ๋๋๊ณผ ๋ง๋ ๊ทธ๋ํ. (0) | 2025.09.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค / Java] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (0) | 2025.09.29 |
| [ํ๋ก๊ทธ๋๋จธ์ค / ์๋ฐ] ๊ณต์์ฐ์ฑ (0) | 2025.09.12 |