본문 바로가기
백준

백준 1292번 : 쉽게 푸는 문제

by Huiyeong 2021. 3. 6.

 문제

www.acmicpc.net/problem/1292

 

1292번: 쉽게 푸는 문제

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

www.acmicpc.net

1292 쉽게 푸는 문제

 

 구현 방법

  구간합으로 구현하였습니다!  

단순하게 이중포문으로 구현할 수 있지만 이중포문은 시간복잡도가 O(n), 구간합의 시간복잡도는 O(1)이기 때문에 구간합을 사용해주었습니다. 해당 문제에서는 이중포문으로도 구현 가능합니다!

1은 1번, 2는 2번 3은 3번,.. 씩 더해줘야 하므로 카운트 변수를 만들어서 반복문 i=0 i<cnt i++ 해주고 반복문이 끝나면 카운트를 올려주었습니다.

모든 구간합을 더하고 입력된 구간의 시작을 끝으로 빼주었습니다.

 

 구현 코드

package BOJ.Silver.구현;

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

public class B1292_쉽게푸는문제 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int[] dp = new int[1002];
		int index = 1, cnt = 1;
		while(index<1000) {
				for (int i=0;i<cnt;i++) {
						dp[index] = (dp[index-1]+cnt);
						index++;
						if (index>1001) break;
				}
				cnt++;
		}
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		int start = Integer.parseInt(st.nextToken());
		int end = Integer.parseInt(st.nextToken());
		System.out.println(dp[end]-dp[start-1]);
	}
}

 

정답!

'백준' 카테고리의 다른 글

백준 1476번 : 날짜 계산  (0) 2021.03.06
백준 1475번 : 방 번호  (0) 2021.03.06
백준 14503번 : 로봇 청소기  (0) 2021.03.06
백준 4948번 : 베르트랑 공준  (0) 2021.03.06
백준 16948번 : 데스 나이트  (0) 2021.03.06