최대 1 분 소요

[백준 1292번] 쉽게 푸는 문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class 백준_손수경_정답_1292 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] arr = new int[1002]; 
        int cnt = 1;
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
 
        //수열 만들기
        for (int i = 1; i <= 1000; i++) {
            for (int j = 0; j < i; j++) {
                if (cnt == 1001break
                arr[cnt] = i;
                cnt++;
            }
        }
        int sum = 0;
        //수열을 만들때, 1번째 인덱스부터 수열을 넣어주었으므로 a부터 b까지의 합을 구하면 됨.
        for (int i = a; i <= b; i++) {
            sum += arr[i];
        }
        bw.write(sum + "\n");
        bw.close();
    }
}
 
cs

이중 루프를 돌리면서 규칙에 맞는 수열을 만들어 주는데, i는 수열에 넣을 숫자이고, j는 i가 들어가는 횟수이고, cnt는 i를 넣을 인덱스를 말한다. 여기서 cnt = 1부터 시작하였으므로 인덱스는 1부터 시작하고 결국 구하는 값은 a와 b의 인덱스 조정없이 바로 구해주면 된다.

댓글남기기