Algorithm/기타
[백준 1292번] 쉽게 푸는 문제 (Java 풀이)
agility
2020. 2. 28. 20:11
백준알고리즘 1292번 : 쉽게 푸는 문제
1이 한번, 2가 2번... 45가 45번.. 과 같은 방식의 수열의 특정 구간에 대한 합을 구하는 문제이다.
어떻게 해야하나 난처했으나, 일단 시간 제한이 2초이고 구간의 최대 길이가 1000까지이기 때문에
수열을 미리 만들어 놓고 맘 편하게 for문을 돌려도 되겠다 싶었다.
풀이 과정
1. ArrayList를 선언하고, 1000번 동안 값을 집어넣는다.
2. 숫자와 해당 숫자를 집어넣은 횟수가 일치한 경우, 숫자를 올린다.
3. 주어진 구간 동안의 ArrayList의 값을 더하고 출력한다.
소스 ▽
더보기
import java.util.ArrayList;
import java.util.Scanner;
public class Main { // 1292번 쉽게 푸는 문제
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<Integer>();
int num = 1;
int count = 0;
for (int i = 0; i < 1000; i++) {
arr.add(num);
count++; // 해당 숫자를 몇번이나 넣고 있는지 집계한다.
if (num == count) {// 숫자와 숫자를 넣은 횟수가 일치한경우(ex, 2는 2번)
num++;// 숫자는 1+
count = 0;
}
}
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int sum = 0;
for (int i = num1 - 1; i <= num2 - 1; i++) {
sum += arr.get(i);
}
System.out.println(sum);
}
}