https://programmers.co.kr/learn/courses/30/lessons/42583
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ๊ณ ๋์ Kit ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ ๋ฌธ์ ํ์ด์ด๋ค.
bridge_length๊ฐ ๋ค๋ฆฌ์ ๊ธธ์ด์ด์ ํ ํธ๋ญ์ด ์ง๋๊ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด๋ผ๋ ์ ์ ๊ณ ๋ คํ์ฌ ํ์ด์ผ ํ๋ค.
์ผ์ฐจ์ ๋ค๋ฆฌ๋ ํธ๋ญ์ด ์์์ ๋ค๋ก ์ง๋๊ฐ๋ฏ๋ก ํ๋ฅผ ์ผ์ฐจ์ ๋ค๋ฆฌ๋ผ๊ณ ์๊ฐํ๊ณ ํ์๋ค.
์ผ๋จ ํ(๋ค๋ฆฌ)์ ์๋ ์ ์ฒด ํ์ค์ ๊ตฌํด ์ด๋ฒ์ ๋ค์ด๊ฐ ํ์ค์ ๋ํ์ ๋ ์์ฉ ๊ฐ๋ฅํ๋ฉด ๋ฃ์ด์ฃผ์๊ณ , ์ปค์ ๋ชป ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๋ ๋ค๋ฆฌ๊ฐ ๋น์ด์๋ค๋ ์๋ฏธ(๋ค๋ฆฌ๊ฐ ๋น์ด์์ด๋ ์ง๋๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก)์์ 0์ผ๋ก ์ฑ์์ฃผ์๋ค. ๋ค๋ฆฌ๊ฐ ๊ฝ ์ฐจ์์ผ๋ฉด ๋ง์ง๋ง๊น์ง ์ด๋ํ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํด์ฃผ์๋ค.
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int i = 0;
int answer = 0; // ๋ง์ง๋ง ํธ๋ญ ์ ์ธ ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ํต๊ณผํ๋๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ
Queue<Integer> bridge = new LinkedList<>(); // ์ผ์ฐจ์ ๋ค๋ฆฌ
while (true) {
int turn = truck_weights[i];
if (i == truck_weights.length) {
break;
}
if (bridge.size() == bridge_length) {
bridge.poll();
} else if (getBridgeSum(bridge) + turn > weight) {
bridge.add(0);
answer++;
} else {
bridge.add(turn);
answer++;
i++;
}
}
return answer + bridge_length;
}
public int getBridgeSum(Queue<Integer> que) {
Iterator iter = que.iterator();
int sum = 0;
while (iter.hasNext()) {
sum = sum + (Integer) iter.next();
}
return sum;
}
}
์ ์ถ๋ ฅ ์์์ ์๋ ์ผ์ด์ค ์์๋ก ๋ฐ๋ณต์ด ๋๋ฌ์ ๋ ๋ณ์ ๊ฐ์ ์ถ๋ ฅํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
bridge (ํ) | answer |
7 | 1 |
7, 0 | 2 |
0, 4 | 3 |
4, 5 | 4 |
5, 0 | 5 |
0, 6 | 6 |
'๊ฐ๋ฐ > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฒด์ก๋ณต (Java) (0) | 2022.02.08 |
---|---|
์ฃผ์ ๊ฐ๊ฒฉ (Java) (0) | 2022.02.06 |
ํ๋ฆฐํฐ (Java) (0) | 2022.01.16 |
๊ธฐ๋ฅ๊ฐ๋ฐ (Java) (0) | 2021.11.12 |
๋ฒ ์คํธ์จ๋ฒ (Java) (0) | 2021.11.03 |
๋๊ธ