반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 1292번 쉽게 푸는 문제 자바(Java)

1) 문제번호 : 1292번

 

2) 문제 출처

www.acmicpc.net/problem/1292

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

 

2. 문제

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

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

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

 

3. 제약사항

4. 입력

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

 

5. 출력

첫 줄에 구간에 속하는 숫자의 합을 출력한다.

 

6. 풀이

- 먼저 배열에 1, 2 2, 3 3 3, 이렇게 값을 넣어준다.

- i를 1부터 1000까지 반복을 하는데, 배열의 인덱스를 나타내는 count가 1001이 될 경우에 종료.

- A부터 B까지의 구간의 합을 더해주면 된다.

 

7. 소스 코드

import java.math.BigInteger;
import java.text.SimpleDateFormat;
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(); //구간의 끝
		
		int[] arr = new int[1002];
		
		int count = 1;
		
		//1 22 333 배열 입력
		for(int i=1;i<=1000;i++) {
			for(int j=0;j<i;j++) {
				//count가 1001이 되면 break
				if(count==1001) break;
				arr[count] = i;
				count++;
			}
		}
		
		int sum = 0;
		
		for(int i=A;i<=B;i++) {
			sum += arr[i];
		}
		
		System.out.println(sum);
	}
}

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기