알고리즘 문제풀이/백준

#2003 : 수들의 합 2

모항 2022. 3. 5. 17:20

풀이방법

사용된 것:

두 개의 포인터(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