30. 최대 길이 연속부분수열

2024. 12. 24. 23:38· 코딩테스트/기초

 

import java.util.*;

class Main {	
    public int solution(int n, int m, int[] arr) {
        int answer = 0, cnt = 0, lt = 0;
        for(int rt = 0; rt < n; rt++) {
        	// cnt는 0을 1로 바꾼 횟수
            // rt가 0이면 cnt++
            if(arr[rt] == 0) {
                cnt++;
            }
            // 0을 1로 바꾼 횟수가 m보다 많을때동안
            while(cnt > m) {
            	// lt가 0이면 cnt--
                if(arr[lt] == 0) {
                    cnt--;
                }
            // lt 오른쪽으로 계속 이동
            lt++;
            }
        // lt와 rt가 1이라고 하면 arr[0] = 1이므로
        // 0 - 0 + 1 = 1
        answer = Math.max(answer, rt-lt+1);
        }
        return answer;
    }

	public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        System.out.print(T.solution(n, m, arr));
	}
}
import java.util.*;

class Main {    
    public int solution(int n, int m, int[] arr) {
        int answer = 0, cnt = 0, lt = 0;
        for(int rt = 0; rt < n; rt++) {
            if(arr[rt] == 0) {
                cnt++;
            }
            while(cnt > m) {
                if(arr[lt] == 0) {
                    cnt--;
                }
            lt++;
            }
        answer = Math.max(answer, rt-lt+1);
        }
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        System.out.print(T.solution(n, m, arr));
    }
}

'코딩테스트 > 기초' 카테고리의 다른 글

32. 아나그램(해쉬)  (0) 2024.12.28
31. 학급 회장(해쉬)  (1) 2024.12.28
29. 연속된 자연수의 합  (0) 2024.12.21
28. 연속 부분수열  (1) 2024.12.20
27. 최대 매출  (0) 2024.12.17
'코딩테스트/기초' 카테고리의 다른 글
  • 32. 아나그램(해쉬)
  • 31. 학급 회장(해쉬)
  • 29. 연속된 자연수의 합
  • 28. 연속 부분수열
누리는 귀여워
누리는 귀여워
안녕하세요, 누리 사료값을 벌기 위해 앞으로 나아가는 아버지의 개발 블로그입니다.
누리는 귀여워
누리아버지
누리는 귀여워
전체
오늘
어제
  • 분류 전체보기 (76)
    • Java (0)
      • Spring Boot (16)
      • JPA (1)
    • JavaScript (1)
      • React.js (1)
    • DataBase (3)
      • PostgreSQL (2)
    • DevOps (2)
      • MSA (1)
      • Docker (1)
    • OS (9)
    • Network (0)
    • CS 지식 (0)
    • Error 모음집 (0)
    • 코딩테스트 (32)
      • 기초 (31)
      • 알고리즘 (1)
    • 기타 (7)
    • 쉼터 (2)
      • 잡담 (2)
      • 하루 마무리 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • centos
  • JPA
  • 깃허브연동
  • Boot
  • postman
  • GATEWAY
  • war 배포
  • kafka connect
  • Docker
  • spring cloud
  • Dockerfile
  • eureka
  • 인텔리제이
  • git bash
  • kafka sink connect
  • postgresql
  • Kafka
  • spring boot
  • MSA
  • Oracle Cloud

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
누리는 귀여워
30. 최대 길이 연속부분수열
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.