본문 바로가기
Algorithm/Baekjoon

Baekjoon 1292 쉽게 푸는 문제 JAVA

by Hunveloper 2022. 4. 25.
728x90
 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

문제

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

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

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

입력

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

출력

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

풀이

1은 1개

2는 2개

3은 3개가 나오기에 n을 이중 for문으로 돌리면서, 중첩된 for문은 i만큼 반복하게 하면서 몇번의 숫자가 사용되었는지는 cnt를 증가 시킴으로써 판단한다.

코드
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a=sc.nextInt(), b=sc.nextInt();
		int ans=0, cnt=0;
		// i를 무한 반복으로 돌림
		for(int i=1;;i++) {
			// 1 22 333 갯수처럼 i는 i번 나올수 있기에 이중 for문을 활용
			for(int j=1;j<=i;j++) {
				// 각 단계마다 반복하는 횟수를 지정
				cnt++;
				// 반복되는 횟수가 a랑 b사이에 들어오면 i값을 추가함
				if(a<=cnt && cnt<=b)
					ans+=i;			
			}
			// cnt가 b보다 크다면 반복문 종료
			if(cnt>b)
				break;
		}
		System.out.println(ans);
	}
}
728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 10610 30 JAVA  (0) 2022.04.27
Baekjoon 1806 부분합 JAVA  (0) 2022.04.27
Baekjoon 1475 방 번호 JAVA  (0) 2022.04.25
Baekjoon 2480 주사위 세개 JAVA  (0) 2022.04.25
Baekjoon 2525 오븐 시계 JAVA  (0) 2022.04.25

댓글