๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/64062
๋ด๊ตฌ๋๊ฐ ์ ํด์ง ์ง๊ฒ๋ค๋ฆฌ๊ฐ ์์ ๋, ๊ฑด๋๊ฐ ์ ์๋ ๋๋์ฆ ์น๊ตฌ๋ค์ ์์ ์ต๋๋ฅผ ๋ฆฌํดํ์.
ํ์ด
์ง์ ํ ๋ช , ํ ๋ช ๊ฑด๋๊ฐ๋ฉด์ ๋์ ๋ด๊ตฌ๋๋ฅผ ๊ฐ์์ํค๋ฉด ๋ฌผ๋ก ์ ๋ต์ ์ถ๋ ฅ์ด ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ํจ์จ์ฑ ํ ์คํธ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋๊ฒ ๋๋ค.
๊ทธ๋์ ๋ด๊ฐ ์ฒ์ ์๊ฐํ๋ ๋ฐฉ๋ฒ์
๋ด๊ตฌ๋๊ฐ 0์ธ ๋์ด ์ฐ์ํด์ K๊ฐ ์ด์ ์์ ๋, ๊ทธ๋๋ ๋ ์ด์ ์ฌ๋์ด ๊ฑด๋๊ฐ์ง ๋ชปํ๊ฒ ๋๋ค.
๊ทธ๋์ ๋ค๋ฆฌ๋ฅผ K๊ฐ์ฉ ๋๋ ์ ๋ดค์ ๋, K๊ฐ์ ๋ค๋ฆฌ ์ค ๋ด๊ตฌ๋๊ฐ ๊ฐ์ฅ ํฐ ๋ค๋ฆฌ์ ๋ด๊ตฌ๋๋งํผ ์ฌ๋์ด ์ง๋๊ฐ๋ฉด K๊ฐ์ ์ง๊ฒ๋ค๋ฆฌ๋ ๋ชจ๋ 0์ด ๋๋ค.
K๊ฐ์ฉ ๋๋ ์ ๋ดค์ ๋, ๊ตฌ๊ฐ์ ์ต๋๊ฐ๋ค ์ค ์ต์๊ฐ์ด ๊ฑด๋๊ฐ ์ ์๋ ์ฌ๋์ ์์ ์ต๋๊ฐ ๋๋ค.
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์งฐ์ ๋, ๋๋ถ๋ถ์ ํ ์คํธ ์ผ์ด์ค์์ ํต๊ณผํ์ง๋ง ํจ์จ์ฑ ํ ์คํธ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
๋ณดํต ์ด๋ ๊ฒ ํฐ ๋ฒ์์ ์ซ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๋ฆฌ๋ ์ด๋ถํ์์ ์ฌ์ฉํ๋ค.
๊ฑด๋๊ฐ ์ ์๋ ์ต์ ์ฌ๋์ ์๋ 1์ผ ๊ฒ์ด๊ณ , ์ต๋๋ ์ง๊ฒ๋ค๋ฆฌ๋ค์ ๋ด๊ตฌ๋ ์ค ์ต๋๊ฐ์ด ๋ ๊ฒ์ด๋ค.
int L = 1, int R = *max_element(stones.begin(), stones.end();
์ด๋ ๊ฑด๋๊ฐ ์ฌ๋์ ์๋ฅผ mid๊ฐ์ผ๋ก ์ ์ ํ๋ค.
๋ง์ฝ mid๋งํผ์ ์ฌ๋์ด ๊ฑด๋๊ฐ๋ค๊ณ ํ์ ๋, ์ฐ์๋ 0์ด K๊ฐ ๋ฏธ๋ง์ผ๋ก ๋์จ๋ค๋ฉด mid๋งํผ์ ์ฌ๋์ด ๊ฑด๋๊ฐ๋ ๋ฌธ์ ๊ฐ ์๋ค๋ ๋ป์ด๋ค.
๋ฐ๋๋ก mid๋งํผ ๊ฑด๋๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ฐ์๋ 0์ด K๊ฐ ์ด์์ด ๋์ค๋ฉด ๊ทธ๋์ mid๋ ์ ํจํ์ง ์์ ๊ฐ์ด ๋๋ค.
์ฐ์์ผ๋ก ๋ฑ์ฅํ๋ 0์ ๊ธธ์ด ์ค ์ต๋๊ฐ์ Max_zero๋ผ๊ณ ํ๋ค๋ฉด
if(Max_zero >= k)
R = mid - 1;
else{
answer = max(answer, mid);
L = mid + 1;
}
์์ ์์ ๋ฐ๋ผ ์ด๋ถํ์์ ์งํํ๋ค.
์ฝ๋ ์์ฑ
|
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> stones, int k) {
int answer = 0;
int L = 0; int R = *max_element(stones.begin(), stones.end());
while(L <= R){
int mid = (L + R) / 2;
int zero = 0;
int Max_zero = 0;
for(int i = 0; i< stones.size(); i++){
if(stones[i] - mid < 0)
zero++;
else{
Max_zero = max(Max_zero, zero);
zero = 0;
}
}
Max_zero = max(Max_zero, zero);
if(Max_zero >= k)
R = mid - 1;
else{
answer = max(answer, mid);
L = mid + 1;
}
}
return answer;
}
|
cs |
'ํ๋ก๊ทธ๋๋จธ์ค > 3๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ๋ธ๋ก ์ด๋ํ๊ธฐ (0) | 2022.07.25 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ์นด๋ ์ง ๋ง์ถ๊ธฐ (0) | 2022.07.25 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น (0) | 2022.07.19 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ๊ฒฝ์ฃผ๋ก ๊ฑด์ค (0) | 2022.07.14 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv3] : ํฉ์น ํ์ ์๊ธ (0) | 2022.07.13 |