์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)] : ์ตœ๋Œ€ ๊ธธ์ด ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด

2023. 10. 20. 13:17ใ†์ธํ”„๋Ÿฐ/์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„

728x90

 

https://hyejin.tistory.com/1225

 

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)] : ์—ฐ์†๋œ ์ž์—ฐ

https://hyejin.tistory.com/1224 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)] : ์—ฐ์†๋œ ์ž์—ฐ https://hyejin.tistory.com/1223 -> ์ด์ „ ๋ฌธ์ œ ํ’€์ด 5. ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ ์„ค๋ช… N

hyejin.tistory.com

-> ์ด์ „ ๋ฌธ์ œ ํ’€์ด 

 

 

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์— ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'์ธํ”„๋Ÿฐ > ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : ์•„๋‚˜๊ทธ๋žจ  (1) 2023.10.22
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜4. HashMap, TreeSet (ํ•ด์‰ฌ, ์ •๋ ฌ์ง€์› Set) : ํ•™๊ธ‰ ํšŒ์žฅ  (1) 2023.10.21
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)] : ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ 2 (์ˆ˜ํ•™์ ์œผ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•)  (1) 2023.10.20
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)] : ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ  (0) 2023.10.19
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)] : ์—ฐ์† ๋ถ€๋ถ„์ˆ˜์—ด  (1) 2023.10.18