Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 2003번] 수들의 합 2 -Java //Wello Horld//

koucop 2019. 8. 6. 15:44

이번에는 BOJ의 2003번 문제 "수들의 합 2"를 풀어보도록 하자

입력으로 수열의 개수 N, 마지막에 판별해 줄 값 M이 주어지고, 그다음 줄에 수열이 차례 대로 주어진다. 출력으로, 구간 합이 M이 되는 경우의 수를 출력하면 되는 문제이다. 반복문을 2번써서 풀어주면 되는 간단한 문제이다.

성공한 코드는 아래와 같다.

import java.io.*;
import java.util.*;

public class sample {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String line = br.readLine();
        int N = Integer.parseInt(line.split(" ")[0]);
        int M = Integer.parseInt(line.split(" ")[1]);
        int[] A = new int[N];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            A[i] = Integer.parseInt(st.nextToken());
        }
        int cnt = 0;
        for (int i = 0; i < N; i++) {
            int sum = 0;
            for (int j = i; j < N; j++) {
                sum += A[j];
                if (sum == M) {
                    cnt++;
                    break;
                }
            }
        }
        bw.write(cnt + "\n");

        bw.flush();
        br.close();
        bw.close();
    }
}

문제 : https://www.acmicpc.net/problem/2003

 

2003번: 수들의 합 2

첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.

www.acmicpc.net