11659 구간 합 구하기
몸비틀기 느낌으로 풀었는데 인덱스를 1번부터 햇으면 편햇을 것 같다
각 자리까지 배열합 = 구간합[i-1] + 배열[i]
구간합 = s[j] - s[i-1]
StringTokenizer를 처음 알게 되었고 잘 사용해 보자..
BuffredReader <- 입력 받을때 scanner와 비슷하지만 더 빠르다, 입력이 string으로 들어오니 int로 받을거면 변환
StringTokenizer <- split과 비슷하지만 좀더 디테일하게 사용가능한 것 같다
내 풀이
import java.util.*;
class Main {
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] arr = new int[n];
int[] sum = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
if (i > 0) sum[i] = arr[i] + sum[i-1];
else sum[i] = arr[i];
}
int[] res = new int[m];
for (int i = 0; i < m; i++){
int a = in.nextInt()-2;
int b = in.nextInt()-1;
if (a >= 0) res[i] = sum[b] - sum[a];
else res[i] = sum[b];
}
for (int x : res) System.out.println(x);
}
}
책코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
Main T = new Main();
Scanner in = new Scanner(System.in);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int n = Integer.parseInt(stringTokenizer.nextToken());
int m = Integer.parseInt(stringTokenizer.nextToken());
int[] S = new int[n+1];
for (int i = 1; i <= n; i++) S[i] = S[i-1] + Integer.parseInt(stringTokenizer.nextToken());
for (int i = 0; i < m; i++){
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int a = Integer.parseInt(stringTokenizer.nextToken());
int b = Integer.parseInt(stringTokenizer.nextToken());
System.out.println(S[b] - S[a-1]);
}
}
}
'알고리즘 이전 > do it 알고리즘 코딩테스트' 카테고리의 다른 글
11660 구간 합 구하기 5 (0) | 2023.10.12 |
---|