728x90
반응형
▷ 문제
N개의 수로 이루어진 수열이 주어집니다.
이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요.
만약 N=8, M=6이고 수열이 1 2 1 3 1 1 1 2과 같다면
합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다.
* 입력
첫째 줄에 N(1≤N≤100,000), M(1≤M≤100,000,000)이 주어진다.
수열의 원소값은 1,000을 넘지 않는 자연수이다.
* 출력
첫째 줄에 경우의 수를 출력한다.
▷ 입력 예시
8 6
1 2 1 3 1 1 1 2
▷ 출력 예시
3
▷ 풀이
import java.util.Scanner;
public class Main {
public int solution(int n, int k, int[] arr){
int answer = 0;
for(int i=0; i<n; i++) {
int sum = 0;
for(int j=i; j<n; j++) {
sum += arr[j];
if(sum > k){
break;
} else if(sum == k){
answer ++;
break;
}
}
}
return answer;
}
public static void main(String[] args){
Main main = 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.println(main.solution(n, k, arr));
}
}
반응형
'Algorithm > Two pointers, Sliding window' 카테고리의 다른 글
[알고리즘]최대 길이 연속부분수열 (0) | 2021.10.19 |
---|---|
[알고리즘]입력받은 수가 연속된 자연수의 합으로 이루어지는 경우의 수 (0) | 2021.10.18 |
[알고리즘]최대 매출 - 배열에서 연속된 요소 N개의 최대 합 구하기 (0) | 2021.10.18 |
[알고리즘]두 배열의 공통 원소 출력하기 (0) | 2021.10.18 |
[알고리즘]두 배열 합치기 및 오름차순 정렬 (0) | 2021.10.17 |