본문 바로가기

코딩테스트/백준

[백준-자바] 1292번 쉽게 푸는 문제 / 2022.04.27

 

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

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

 

 

import java.util.Scanner;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        int B = sc.nextInt();

        ArrayList<Integer> list = new ArrayList<>();

        int number = 1; // 숫자 1부터
        int index = 0; // 1번은 1개 2번은 2개 3번은 3개를 알려주는 변수

        while(true){
            if(list.size() == B) // 리스트 사이즈가 B라면 종료 (B개까지 더하면 되므로)
                break;

            if(number>index){ // number의 수가 number개 보다 덜 삽입되었을 경우
                list.add(number);
                index++;
            } else{ // number의 수가 number만큼 리스트에 삽입되었을 경우
                number++; // 다음 number
                index = 0; // 인덱스는 다시 0으로
            }
        }

        int sum = 0; // 합 변수

        for(int i=A-1; i<list.size(); i++){ // A번째 부터 (배열 인덱스에선 A-1)부터 B번까지
            sum += list.get(i);             // 다 더하기
        }

        System.out.println(sum);

    }
    
}