풀이방법
사용된 것:
두 개의 포인터(two pointers)
2022.03.05
살펴볼 구간의 시작 인덱스, 끝 인덱스를 각각 가리키는 두 개의 int형 변수(아래의 코드에서는 i와 j)를 이용한다.
두 개의 반복문을 돌리며 합계값을 구하여 m과 비교하면 된다.
코드
Java(2022.03.05)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n, m, ans; //수열의 길이, 목표 정수, 출력할 답
static int[] nums; //수열
static StringTokenizer st;
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//n과 m 읽어오기
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
//수열 읽어오기
nums = new int[n];
st = new StringTokenizer(br.readLine());
for(int i = 0; i<n; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
//탐색하기
ans = 0;
int sum;
for(int i = 0; i<n; i++) {
sum = nums[i];
if(sum == m) ans++;
for(int j = i+1; j<n; j++) {
sum += nums[j];
if(sum > m) break;
else if(sum == m) ans++;
}
}
System.out.print(ans);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#9009 : 피보나치 (0) | 2022.03.05 |
---|---|
#3273 : 두 수의 합 (0) | 2022.03.05 |
#1431 : 시리얼 번호 (0) | 2022.03.05 |
#3190 : 뱀 (0) | 2022.03.02 |
#2607 : 비슷한 단어 (0) | 2022.03.02 |