코딩테스트 6번 __rt,lt -> 연속순열문제 ->two pointers

JoMinJun·2021년 7월 27일
0

코딩테스트

목록 보기
31/39

package main3;


import java.util.Arrays;
import java.util.Scanner;



public class Main3 {
	
	
	// 값을 1 로 변경
	public  int solution(int n, int m , int []arr1){
		int count = 0;
		int answer = 0 ;
		int lt = 0;
				
		for(int rt = 0 ; rt < n; rt ++) {
		
			if((arr1[rt]) == 0 ) {
				count ++;
			} // rt 가 5일때까지 count = 2
			while(count > 2) { //만약 count가 2보다 커진다면 반복한다
				if(arr1[lt] == 0) {
					count --;
					lt ++;
				}
				
			answer =	Math.max(answer, rt-lt + 1);
				
				
			}
		}		
		
		
	//n은 갯수
	//11001011
	//m은 바꿀수 있는 숫자
		
		

		return answer;
		
	

		
	};
	
	
	
	
	
	
	
	
	// 잘라준다
	public int[] split(int []arr1) {
	
		 // 0 단위로 자르겠습니다.
		 for(int i = 0 ; i  < arr1.length; i ++ ) {
			 
			 
			 if(arr1[i] == 0 ) {
	
			
						
				int[] b = Arrays.copyOfRange(arr1, i+1,  arr1.length);
				
		
				
				return b;
					
	
			 }
	}
		 
	return null;
		 
	}
	
	
	

	
	public static void main(String[] args) {
		
		
		 Main3 main2 = new Main3();
		
		 Scanner kb = new Scanner(System.in);
		
		
		 
		 int n=kb.nextInt();
		 int m=kb.nextInt();
		 
		int []arr1 = new int[n];
		
		 for(int i=0; i<n; i++){
			 
		
			arr1[i] = kb.nextInt();
			 
			 
		 };
		 
		 
		
		 main2.solution(n,m,arr1); // -> 6
	
		 
		
		 
	
		
		 
	
		


	
	 
	     
		
	}
	

}

profile
기술정리

0개의 댓글