Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 Two pointers, Sliding window Q06_ 최대 길이 연속부분수열 본문
ALGORITHM/inflearn_javaAlgorithm
자바 알고리즘 문제 풀이 Two pointers, Sliding window Q06_ 최대 길이 연속부분수열
chan_96 2022. 4. 8. 23:34728x90
설명
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 18
코드
내가 입력한 코드
더보기/
해설 코드
더보기import java.util.*; class Main { public int solution(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; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n=kb.nextInt(); int k=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i<n; i++){ arr[i]=kb.nextInt(); } System.out.print(T.solution(n, k, arr)); } }
풀이 및 정리
-
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 HashMap_TreeSet Q02_ 아나그램(해쉬) (0) | 2022.04.09 |
---|---|
자바 알고리즘 문제 풀이 HashMap_TreeSet Q01_ 학급 회장 (0) | 2022.04.08 |
자바 알고리즘 문제 풀이 Two pointers, Sliding window Q05_ 연속된 자연수의 합 (0) | 2022.04.06 |
자바 알고리즘 문제 풀이 Two pointers, Sliding window Q04_ 연속 부분수열 (0) | 2022.03.30 |
자바 알고리즘 문제 풀이 Two pointers, Sliding window Q03_ 최대 매출 (0) | 2022.03.29 |
Comments