1. 문제
https://www.acmicpc.net/problem/8393
2. 풀이
"n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오."
내가 3을 입력하면 1부터 3까지의 합
1 + 2 + 3 = 6 이란 결과값이 나오도록 해야 한다.
- 만약 사용자가 3을 입력할 경우 코드에선
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
이렇게 3번의 덧셈 연산이 일어난다는 걸 알아둬야 한다.
- 사용자가 입력한 값(예시: 3)은 scanner를 사용해서 받으면 된다.
- 사용자가 입력한 값을 저장해 놓는 변수(n)를 생성한다.
> 4를 입력하면 1부터 4를 더해줄 수 있도록 만드는 것이고
이 4라는 숫자를 n이라는 공간에 저장해 놓는 것이다.
- 위에서 만약 사용자가 3을 입력할 경우 코드에선
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
이렇게 3번의 덧셈 연산이 일어난다고 했었다.
이때 덧셈의 결과값(빨강색으로 칠한 것)이 저장될 변수(sum)을 생성한다.
> 이유: 사용자가 3을 입력했다면 1부터 3까지의 합을 구해야 할 것이다.
위에서 보면 첫 번재로 이루어지는 연산은 0 + 1이다. 0+1의 결과값인 1이 저장되어야
두 번째로 이루어질 연산(1+2)에서 이 1이 사용될 수 있다.
덧셈의 결과값을 저장해 놓지 않으면
다음 연산을 이어갈 수 없다.
3. 코드
import java.util.Scanner;
public
class Main {
public static void main ( String[] args ) {
// n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); // 사용자가 입력한 N 값 저장
scan.close();
int sum = 0;
//입력된 숫자만큼 더해줌
for (int i=1; i<=n; i++) {
sum += i; //sum = sum + i와 같다.
}
System.out.println(sum);
}
}
실수했던 부분
- sum 변수는 for문이 바깥에 써야한다.
> for 문 안에 쓸 경우 덧셈 결과값이 초기화된다.
0 + 1 의 결과값인 1이 저장되어야 하는데
for 문 안에 int sum = 0;이라고 써버리면 1이란 결과값이 0으로 바껴버린다.
- for문 안에 System.out.println을 쓰면 안된다.
가령 내가 3을 입력했다고 해보자.
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
나는 3을 입력했을 때 6이란 최종 결과값만 얻고 싶은 데
1, 3, 6이라는 총 3개의 결과값을 얻게 된다.
'IT > BaekJoon' 카테고리의 다른 글
[백준/JAVA] 25314번 '코딩은 체육과목 입니다' 쉬운 풀이 설명 (0) | 2023.04.23 |
---|---|
[백준/JAVA] 25304번 영수증 문제 (0) | 2023.04.09 |
[JAVA] 10950번. A + B - 3 문제 (0) | 2023.03.28 |
[백준/JAVA] 2739 구구단 문제 (0) | 2023.03.12 |
[백준/JAVA] 2480 주사위 세개 (0) | 2023.03.05 |