1 + (1+2) + (1+2+3) + (1+2+3+4) .... (1+2+3+4+5+6+7+8+9+10) 의 합을 반복문으로 풀기
public class Main {
public static void main(String[] args) {
int sum = 0;
int n = 10; // 최대 숫자
int num = 1; // 시작 숫자
for (int i = 1; i <= n; i++) {
int tempSum = 0;
for (int j = 1; j <= i; j++) {
tempSum += num;
num++;
}
sum += tempSum;
}
System.out.println(sum);
}
}
다만 결과가 1540으로 출력됨
해당 문제를 해결하기 위해서는 각 항의 합을 계산할 때에는 연속된 숫자를 사용해야 함. 하지만 변수 num을 증가시키면서 그 값을 사용하게 되면, 이전의 합과 다른 값을 사용하게 됨.
올바른 결과를 얻기 위해서는 num 변수를 사용하지 않고, j 변수를 사용하여 연속된 숫자를 더해야 함. 수정된 코드에서는 tempSum += j;를 사용하여 숫자를 누적하고 있음. 이렇게 수정하면 1부터 연속된 숫자를 더해가며 올바른 합을 얻을 수 있음.
num++; 제거
public class Main {
public static void main(String[] args) {
int sum = 0;
int n = 10; // 최대 숫자
for (int i = 1; i <= n; i++) {
int tempSum = 0;
for (int j = 1; j <= i; j++) {
tempSum += j;
}
sum += tempSum;
}
System.out.println(sum);
}
}
public class Main {
public static void main(String[] args) {
int sum = 0;
int n = 10; // 최대 숫자
int tempSum = 0;
for (int i = 1; i <= n; i++) {
tempSum += i;
sum += tempSum;
}
System.out.println(sum);
}
}
public static void main(String[] args) {
int sum = 0;
int n = 10; // 최대 숫자
int tempSum = 0;
for (int i = 1; i <= n; i++) {
tempSum += i;
sum += tempSum;
System.out.println("tempSum:"+tempSum);
System.out.println("sum:"+sum);
System.out.println();
}
System.out.println("최종값:" + sum);
}