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

JoMinJun·2021년 7월 26일
0

코딩테스트

목록 보기
30/39

package main4;


import java.util.Scanner;



public class Main4 {

	public  int solution(int n){
		
		// n 개 - > 7 ~ 999 // 15
	
		int count = 0;
		int sum = 0; 
			
			
			for(int i = 1; i <= n; i ++) {
				System.out.println("....");
				
				sum = i;
				
				for(int j = i+1; j <= n; j ++ ) {
					
					sum += j;
					System.out.println(sum);
					if(sum == n) {
						count ++;
					}
					System.out.println("count :" + count );
					
				}
			}
			
		
		

		return count;
	};
	
	
	
	
	
	
	
	
	
	
	
	
	public static void main(String[] args) {
		
		
		Main4 main2 = new Main4();
		
		 Scanner kb = new Scanner(System.in);
		
		
		 
		 int n=kb.nextInt();
		

	   System.out.println(main2.solution(n));	
	     
		
	}
	

}

(two pointers) 로 풀어낸 방식

package main4;


import java.util.Scanner;



public class Main4 {

	public  int solution(int n){
	

		
		int lt = 0;
		int sum = 0;
		int count = 0;
		for(int rt = 1 ; rt < n; rt ++) {
			sum += rt;
			if(sum == n) {
				count ++;
			}
			while(sum >= n) {
				
				sum -= lt;
				lt++;
				if(sum == n) {
					count ++;
				}
				
			}
		}
		
		
		
		
		return count;
	};
	
	
	
	
	
	
	
	
	
	
	
	
	public static void main(String[] args) {
		
		
		Main4 main2 = new Main4();
		
		 Scanner kb = new Scanner(System.in);
		
		
		 
		 int n=kb.nextInt();
		

	   System.out.println(main2.solution(n));	
	     
		
	}
	

}
profile
기술정리

0개의 댓글