코딩테스트/BOJ

[BOJ] 11441 합 구하기 - JAVA

5월._. 2022. 4. 13.
728x90

1. 문제

 

11441번: 합 구하기

첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는

www.acmicpc.net

N개의 수 A1, A2, ..., AN이 입력으로 주어진다. 총 M개의 구간 i, j가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.

2. 풀이

N+1칸 배열을 만들고 1부터 N번째 칸까지 이전값+입력값을 저장했다.

i이상 j이하 합을 구해야하므로 i를 입력받을 때 -1한다. 

A[to]-A[from]을 출력한다.

public static void main(String[] args) throws Exception{
   BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
   StringTokenizer st;
   StringBuilder sb = new StringBuilder();

   int N = Integer.parseInt(in.readLine());
   int[] A = new int[N+1];

   st = new StringTokenizer(in.readLine());
   for(int i=1;i<=N;i++) A[i] = A[i-1]+Integer.parseInt(st.nextToken());

   int M = Integer.parseInt(in.readLine());
   for(int i=0;i<M;i++){
      st = new StringTokenizer(in.readLine());
      int from = Integer.parseInt(st.nextToken())-1;
      int to = Integer.parseInt(st.nextToken());
      sb.append(A[to]-A[from]).append('\n');
   }

   System.out.print(sb);
}

3. 결과

댓글