[java] 백준 1292번 쉽게 푸는 문제알고리즘/백준2021. 7. 28. 12:15
Table of Contents
예제 입력 1에 보면 3, 7을 입력으로 받아서 15가 출력되었는데
그 과정을 설명해보자면
1+2+2+3+3+3+4+4+4+4+5+5+5+5+5 ~~~ + 1000이라고 생각해보았을 때
3번째부터 7번째 수까지 합을 보면
2+3+3+3+4 = 15가 된다.
즉, 내가 생각한 방법은 값을 다 채워 놓고 그 이후에 값을 받아서 A번째부터 B번째까지 값을 뽑아내면 되겠다 싶어 아래와 같이 구현하였다.
배열을 1001로 뽑은 이유는 입력에 보면 (1 ≤ A ≤ B ≤ 1,000) 이기 때문에 배열에 담아봤자 1001개를 넘지 못할 거라고 생각해서이다.
이중 for문을 통해서 1+2+2+3+3+3 ~~ 이런 식으로 만들어주었고
배열은 총 1001개이지만... 반례인 A=1, B=1000이라고 생각했을 때
배열의 개수보다 i, j의 값이 더 많기 때문에 count는 배열의 크기를 초과하게 돼서 에러(ArrayIndexOutOfBoundsException)를 발생하게 된다.
그래서 조건문을 만들어 에러 처리를 했다.
import java.util.Scanner;
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[1001];
int tot=0, count=0;
for(int i=1; i<B+1; i++){
for(int j=1; j<=i; j++){
if(count >= arr.length-1)
break;
arr[count]=i;
count++;
}
}
// 배열은 0부터 시작이라서 3번째부터 7번째라고 가정하에
// 배열은 arr[2] ~ arr[6]번째 이기 때문에 반복문의 조건을 아래와 같이 줌.
for(int j=A-1; j<=B-1; j++){
tot += arr[j];
}
System.out.println(tot);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[java] 백준 2750번 수 정렬하기 (2) | 2021.07.30 |
---|---|
[java] 백준 2455번 지능형 기차 (0) | 2021.07.29 |
[java] 백준 10773번 제로 (6) | 2021.07.27 |
[java] 백준 2440번, 2441번 별 찍기 - 3~4 (0) | 2021.07.26 |
[java] 백준 2420번 사파리월드 (4) | 2021.07.25 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊