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

minjung·2022년 11월 26일
0

📖문제

동호는 내년에 초등학교를 입학한다. 그래서 동호 어머니는 수학 선행 학습을 위해 쉽게 푸는 문제를 동호에게 주었다.

이 문제는 다음과 같다. 1을 한 번, 2를 두 번, 3을 세 번, 이런 식으로 1 2 2 3 3 3 4 4 4 4 5 .. 이러한 수열을 만들고 어느 일정한 구간을 주면 그 구간의 합을 구하는 것이다.

하지만 동호는 현재 더 어려운 문제를 푸느라 바쁘기에 우리가 동호를 도와주자.

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

✏️내 풀이

  1. 두 숫자 A,B를 입력받는다.
  2. Integer타입의 List를 생성하고, 이중 for문을 사용한다.
    2-1. 바깥 for문은 int i=B가 될 때까지 반복한다.
    2-2. 안쪽 for문은 int j=i가 될 때까지 반복한다.
    2-3. 안쪽 for문에서 count 누적합을 구한다.
    2-4. 만약 A<=count<=B이면 i의 누적합을 구한다.
  3. 답을 출력한다.
package lv_1;

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

public class B1292 {

	public static void main(String[] args) throws Exception {

		//입력값을 받는다.
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		//받은 입력값을 공백으로 구분해서 각각 a,b에 넣는다.
		StringTokenizer st = new StringTokenizer(br.readLine());

		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());

		int count = 0; //반복횟수를 체크하기 위한 변수
		int result = 0; //범위내 누적합을 구하기 위한 변수

		for(int i=1;i<=b;i++) { //i는 몇번까지 반복할까?에 필요하다. 숫자 b까지 반복해야 한다.
			for(int j=1;j<=i;j++) { //j는 i를 몇번 반복할까?에 필요하다. i번만큼 반복해야한다.
				count++;

				if(a<=count && count<=b) { //만약 반복횟수가 a와 b사이라면
					result += i; //그때의 데이터 i의 누적합을 구한다.
					//만약 i가 7이라고 가정하면, j는 1~7이 된다.
					//7이 7번 반복되기 때문에, j의 누적합이 아닌 i의 누적합을 구해야 한다.
				}
			}
		}

		System.out.println(result);

	}
}

0개의 댓글