나 JAVA 봐라

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

코딩테스트/구현

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

cool_code 2024. 4. 9. 16:10

https://www.acmicpc.net/problem/1292

 

1292번: 쉽게 푸는 문제

첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.

www.acmicpc.net

 

  • 수열은 1000번째까지 존재할 수 있으므로, 먼저 크기가 1000인 배열을 만들어 조건에 맞는 수열을 넣는다. ( int arr[] = new int[1000]) 
    • 수열을 초기화할 때에는 for문으로 1000번째까지 돌면서, cnt를 통해 숫자 n이 n만큼 배열에 입력되었는지 검사한다.
  • A,B를 입력받은 후, 해당 배열에 접근하여 합을 구한다. 

 

package yejin.song;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_쉽게푸는문제 {
    public static void main(String[] args) throws IOException {

        int arr[] = new int[1000]; // 0~999인덱스까지

        int n = 1; // 수열의 시작
        int cnt = 0; // 수가 몇번 들어갔는지 체크

        // 배열 초기화 (= 수열)
        for (int i = 0; i< 1000; i++){
            if(cnt == n){ // 이미 n이 n번(cnt) 들어갔다면 -> 해당 배열부터는 새로운 n(n+1)과 cnt는 초기화
                n++;
                cnt = 1;
                arr[i] = n;
            }
            else { // cnt < n인 경우
                cnt++;
                arr[i] = n;
            }
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());

        int sum = 0;

        for (int i = A-1; i< B; i++){
            sum += arr[i];
        }
        System.out.println(sum);


    }
}