[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 8์ผ์ฐจ TIL (๊ธฐ๋ฅ๊ฐ๋ฐ)
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ์คํ/ํ, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
ํ์ด
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
31
32
33
34
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
List<Integer> days = new ArrayList<>();
for (int i = 0; i < progresses.length; i++) {
int v = (int) Math.ceil((100 - (double) progresses[i]) / (double) speeds[i]);
days.add(v);
}
ArrayList<Integer> result = new ArrayList<>();
int count = 1;
int prev = days.get(0);
for (int i = 1; i < days.size(); i++) {
if (prev >= days.get(i)) {
count++;
} else {
result.add(count);
count = 1;
prev = days.get(i);
}
}
result.add(count);
int[] answer = new int[result.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = result.get(i);
}
return answer;
}
}
days ์์๋ ๊ฐ ์์ ์ด ์๋ฃ๋๊ธฐ ๊น์ง ๋จ์ ๊ธฐ๊ฐ์ด ๋ค์ด์๋ค. ๋งจ ์ ์์ ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ฐ์ prev ๋ฅผ days ์ ๋งจ ์ ์์๋ก ์ด๊ธฐํ ์ํจ๋ค. ๊ทธ ํ days ๋ฅผ ์ํํ๋ฉด์ ์ด prev ๊ฐ ๊ฐฑ์ ๋์ด์ผ ํ๋ค.
days ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ๋ค์ด ์์๋
1
2
// days
[ 5, 10, 1, 1, 20, 1]
prev ๋ฅผ 5๋ถํฐ ์์ํด ๊ทธ ๋ค์ ์ซ์๊ฐ ๋ ํฐ์ง ์์์ง ๋น๊ตํ๋ค.
-
if (prev >= days.get(i)) : ์ด ๊ฒฝ์ฐ์ ๋ค์ชฝ ์์ ๋ ๋ฐฐํฌ์ ํฌํจ์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ count + 1 ์ ํด์ค๋ค. prev ์์ ๋ count ๊ฐฏ์์ ๊ฐ์ด ํฌํจ์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ต์ด count ๋ณ์๋ 1๋ก ์ด๊ธฐํํ๋ค.
-
if (prev < days.get(i)) : prev ๋ณด๋ค ๊ธฐ๊ฐ์ด ๋ ๊ธด ์์ ์ ๋ง๋๋ฉด ํ์ฌ๊น์ง ๋์ ๋ count ๊ฐ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๊ทธ ํ count ๊ฐ์ ๋ค์ 1๋ก ์ด๊ธฐํ ํ๊ณ , prev ๋ฅผ ํ์ฌ ์์ ์ผ๋ก ๊ฐฑ์ ํ๋ค.
-
result.add(count) : ๋งจ ๋ง์ง๋ง ํญ๋ชฉ์ ๋ํ count ๊ฐ๋ result ์ ์ ์ฅํด์ผ ํ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ