2023. 10. 20. 13:17ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1225
-> ์ด์ ๋ฌธ์ ํ์ด
6. ์ต๋ ๊ธธ์ด ์ฐ์๋ถ๋ถ์์ด
์ค๋ช
0๊ณผ 1๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด๊ฐ N์ธ ์์ด์ด ์ฃผ์ด์ง๋๋ค. ์ฌ๋ฌ๋ถ์ ์ด ์์ด์์ ์ต๋ k๋ฒ์ 0์ 1๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ์ต๋ k๋ฒ์ ๋ณ๊ฒฝ์ ํตํด ์ด ์์ด์์ 1๋ก๋ง ๊ตฌ์ฑ๋ ์ต๋ ๊ธธ์ด์ ์ฐ์๋ถ๋ถ์์ด์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๋ง์ฝ ๊ธธ์ด๊ฐ ๊ธธ์ด๊ฐ 14์ธ ๋ค์๊ณผ ๊ฐ์ ์์ด์ด ์ฃผ์ด์ง๊ณ k=2๋ผ๋ฉด
1 1 0 0 1 1 0 1 1 0 1 1 0 1
์ฌ๋ฌ๋ถ์ด ๋ง๋ค ์ ์๋ 1์ด ์ฐ์๋ ์ฐ์๋ถ๋ถ์์ด์
์ด๋ฉฐ ๊ทธ ๊ธธ์ด๋ 8์ ๋๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์์ด์ ๊ธธ์ด์ธ ์์ฐ์ N(5<=N<100,000)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ธธ์ด์ 0๊ณผ 1๋ก ๊ตฌ์ฑ๋ ์์ด์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์ต๋ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ์ธ์.
์์ ์ ๋ ฅ 1
14 2
1 1 0 0 1 1 0 1 1 0 1 1 0 1
์์ ์ถ๋ ฅ 1
8
๋ฌธ์ ํ์ด 1
public int solution(int n, int k, int[] arr) {
int answer = 0, length = 0, ch = k;
for (int i = 0; i < n; i++) {
if (arr[i] == 1) length = 1;
for (int j = 1; j <= n - i-1; j++) {
if (arr[i + j] == 1) {
length++;
} else {
if (ch != 0) {
length++;
ch--;
}else {
break;
}
}
}
answer = Math.max(answer, length);
length = 0; ch = k;
}
return answer;
}
๐ฉ๐ป๐ป : ํ๊ฒฐ๊ฐ์ ๋์ ๋ฌธ์ ํ์ด ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฒ์๋ ์ด์ค for๋ฌธ์ ์ฌ์ฉํ๋ฉด์ ๋จผ์ arr[i] ๊ฐ 1์ด๋ฉด length๋ฅผ 1๋ก ์ค์ ํด์ฃผ๊ณ , ๊ทธ ๋ค์
arr[i] ๊ธฐ์ค ์์ผ๋ก ๋์ด๊ฐ๋ฉด์ ๊ทธ ๊ฐ์ด 1 ์ด๋ฉด length์ +1 ํด์ฃผ๊ณ , ๋ง์ฝ 0์ธ๋ฐ ch์ ๊ฐ์ด ์์ง 0์ด ์๋๋ฉด (0์ผ๋ก ๋ฐ๊พธ๋ ๊ธฐํ๋ฅผ ๋ค ์ฐ์ง ์์๋ค๋ฉด) length ๋ฅผ +1 ํด์ฃผ๊ณ ch ์ ๊ฐ์ -1 ํด์ค๋ค.
๋ง์ฝ 0์ผ๋ก ๋ฐ๊ฟ ์ ์๋ ๊ธฐํ๋ฅผ ๋ค ์ผ๋ค๋ฉด ch == 0 ์ด๋ฉด break ํ๊ณ arr[i] ๊ธฐ์ค ๊ธธ์ด๋ฅผ ์ต๋ ๊ฐ์ผ๋ก ๋น๊ตํ๊ณ
๊ทธ ๋ค์ ๊ธธ์ด ๊ตฌํ๊ธฐ๋ฅผ ์ํด length, ch ๊ฐ์ ์ด๊ธฐํํด์คฌ๋ค.
๋ฌธ์ ํ์ด 2
public int solution2(int n, int k, int[] arr) {
int answer = 0, cnt = 0, lt = 0;
for (int rt = 0; rt < n; rt++) {
if (arr[rt] == 0) cnt++;
while (cnt > k) {
if (arr[lt] == 0) cnt--;
lt++;
}
answer = Math.max(answer, rt - lt + 1);
}
return answer;
}
๐พ : ๊ฐ์ฌ๋์ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๋จผ์ cnt ๋ 0์ผ๋ก ๊ต์ฒด ํ์์ด๊ณ , lt, rt ํฌ์ธํฐ๋ฅผ ๋๋ค.
๋จผ์ rt๋ ์ฃผ์ด์ง ๋ฐฐ์ด๋๋ก ์์ผ๋ก ์์ง์ด๋ฉฐ 0์ 1๋ก ๋ฐ๊พธ๋ฉฐ ์์ง์ธ๋ค. arr[rt] == 0 ์ด๋ฉด cnt +1 ํด์ค๋ค. (0์ 1๋ก ๋ฐ๊ฟจ๋ค๋ ์๋ฏธ)
๊ทธ๋ฆฌ๊ณ while๋ฌธ์ ๋๋๋ฐ ์ด๋ cnt ๊ฐ k ๋์ด๊ฐ๋ฉด (0์ ๋ฐ๊ฟ ์ ์๋ ํ์๋ฅผ ์ด๊ณผํ๋ฉด) lt๋ฅผ ์์ง์ฌ์ ์ด์ lt ๊ฐ ๋ค์ 1๋ก ๋ฐ๊พผ ๊ฒ์ 0์ผ๋ก ๋ฐ๊ฟ์ค๋ค. ๊ทธ ๋ค์์์ผ rt - lt + 1 ์ ํด์ ๊ธธ์ด๋ฅผ ๊ตฌํ ์ ์๊ณ , ์ต๋๊ฐ์ answer์ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.