โ๏ธ ๋ฌธ์

๐ข ์๊ณ ๋ฆฌ์ฆ
#์ด์งํ์
๐คฏ ํ์ด ๋ฐฉ๋ฒ
์ ํ ์๊ฐ ๋ด์ ํผ์ฆ์ ๋ชจ๋ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ จ๋์ ์ต์๊ฐ์ ๊ตฌํ๋ค.
์ต์๊ฐ์ ๊ตฌํ๋ ค๋ฉด ํน์ ๊ฐ์์๋ ์งํ์ด ๋ถ๊ฐํ ๋ ๊ทธ ๊ฐ๋ณด๋จ ์ปค์ผ ํ๊ณ ,
๊ฐ๋ฅํ ๊ฐ ์ค์์๋ ์ ์ผ ์์์ผ ํ๋ค
๊ทธ๋ฌ๋ฉด 1) ํ๋์ฉ ์ฌ๋ ธ๋ค ๋ด๋ฆฐ๋ค
2) ํน์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ์๋ค๊ฐ๋ค ํด๋ณธ๋ค > binary?
> binary ํ๋ ๊ฒฝ์ฐ 0๋ถํฐ ๊ฐ์ฅ ํฐ diff๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ํ๋ค.
์ ์ถ ํ ํ ์คํธ์ผ์ด์ค 14์์ ํ๋ฆฌ๋ ๊ฒฝ์ฐ: ์๋ จ๋๋ 1๋ถํฐ ์์ํด์ผ ํ๋ค..
์ ์ถ ์ ํ ์คํธ์ผ์ด์ค ๋ง์ง๋ง ํ๋ฆฌ๋ ๊ฒฝ์ฐ: ์ด์งํ์ start <= end ์์ง๋ง๋ผ...... ์์๋๋ค.
๐พ ๊ตฌํ ์ฝ๋ (์๋ฐ)
import java.util.*;
class Solution {
public int solution(int[] diffs, int[] times, long limit) {
int answer = 0;
int n = diffs.length;
int start = 1;
int end = Arrays.stream(diffs).max().getAsInt();
while (start <= end) {
int mid = (start + end) / 2;
long takenTime = solve(n, mid, times, diffs, limit);
// ์๊ฐ์ด ๋ ๋ง์ด ๋์ค๋ฉด level๊ฐ์ ๋๋ ค์ผ ํจ
if (takenTime > limit) {
start = mid + 1;
} else {
answer = mid;
end = mid - 1;
}
}
return answer;
}
long solve(int n, int level, int[] times, int[] diffs, long limit) {
long timeCnt = 0;
for (int i = 0; i < n; i++) {
int diff = diffs[i];
int time_cur = times[i];
int time_prev = 0;
if (i > 0) {
time_prev = times[i - 1];
}
if (diff <= level) {
timeCnt += time_cur;
} else {
timeCnt += (time_prev + time_cur) * (diff - level);
timeCnt += time_cur;
}
if (timeCnt > limit) {
return timeCnt;
}
}
return timeCnt;
}
}
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
'Algorithm > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] Lv.2 ๋น๋ฐ ์ฝ๋ ํด๋ (python) (0) | 2025.04.29 |
---|---|
[programmers] [PCCP ๊ธฐ์ถ๋ฌธ์ ] 3๋ฒ / ์ถฉ๋์ํ ์ฐพ๊ธฐ (java) (0) | 2025.04.23 |
[programmers][ํHeap] Lv.2 ๋ ๋งต๊ฒ (java) (0) | 2025.02.11 |
[programmers] [PCCE ๊ธฐ์ถ๋ฌธ์ ] 9๋ฒ / ์ด์ํ ์นธ (java) (0) | 2024.11.23 |
[programmers] [PCCP ๊ธฐ์ถ๋ฌธ์ ] 1๋ฒ / ๋ถ๋ ๊ฐ๊ธฐ (java) (1) | 2024.11.21 |