๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/64062
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
์์ค์ฝ๋
import java.util.Arrays;
public class Solution {
public int solution(int[] stones, int k) {
int answer = 0;
int start = Arrays.stream(stones).min().getAsInt();
int end = Arrays.stream(stones).max().getAsInt();
while(start <= end) {
int mid = (start + end) / 2;
if(cross(mid, stones.clone(), k)) {
answer = mid;
start = mid + 1;
} else {
end = mid - 1;
}
}
return answer;
}
public boolean cross(int num, int[] stones, int k) {
Arrays.setAll(stones, i -> (stones[i] - num + 1)); // --- (1)
int max = 0, cnt = 0;
for(int stone : stones) {
if(cnt > 0 && stone > 0) {
max = Math.max(max, cnt);
cnt = 0;
} else if(stone <= 0) {
cnt++;
}
}
return Math.max(max, cnt) < k;
}
}
ํ๊ณ
- ์ด๋ถํ์์ผ๋ก ๊ฑด๋ ์ ์๋ ์ต๋ ํ์ ์๋ฅผ ์ฐพ์๊ฐ๋ค.
- cross์์๋ num๋ฒ์งธ ํ์์ด ๊ฑด๋ ์ ์๋์ง๋ง ํ๋จํ๋ฉด ๋๊ธฐ ๋๋ฌธ์, (1)์์๋ (num-1)๋ฒ์งธ ํ์๊น์ง ๊ฑด๋์ ๋ stone๋ค์ ์ํ๋ฅผ ๋ง๋ค์ด์ค๋ค.
- ์ดํ num๋ฒ์งธ ํ์์ด ๊ฑด๋ ์ ์๋์ง ํ์ธํด์ค๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ] ํธํ ๋ฐฉ ๋ฐฐ์ (0) | 2020.04.01 |
---|---|
[2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ] ์ ํ๋ฒ์ค (0) | 2020.03.16 |
[2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ] ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2020.03.16 |
[2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ] ์ถ์ ํธ๋ํฝ (0) | 2020.03.16 |
[2018 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฑ์ฉ] ํ์ผ๋ช ์ ๋ ฌ (0) | 2020.03.05 |