[lv.0] 짝수의 합
일단, 사람에게 시키듯이 쭉 한글로 써보고 나서 코드로 구현하자.
이건 프로젝트를 수행할 때도 필요한 부분이다.
짝수의 합
문제 설명
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
제한사항
0 < n ≤ 1000
입출력 예
10 | 30 |
4 | 6 |
입출력 예 설명
입출력 예 #1
- n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.
입출력 예 #2
- n이 4이므로 2 + 4 = 6을 return 합니다.
먼저 내가 짜본 한글 로직
//1. 정수 n을 선언
//2. 정수n이 짝수인지 아닌지를 판별
//3. n 이하의 짝수를 구하고
//4. 이 수들을 모두 더한다.
//5. 결과를 출력한다.
수정해봄직한 부분
* 지금 2번에서는 정수 n만 판별하잖아, 근데 이게 1부터 n까지 변하면,
결국 그게 3번에서 하고싶은 말과 동일한 상황이 되지(반복되면)
=> 즉, 2, 3번을 합칠 수 있게 될 것 같다는 의미.
수정한 로직 : 지금 3번이 좀 애매해서, 3번을 2번 과정에 합칠 수 있을 것 같다.
//1. 정수 n을 선언
//2. 정수n이 짝수인지 아닌지를 판별 -> 정수 1부터 n까지 짝수인지 아닌지를 판별(3번 과정 포함) //3. n 이하의 짝수를 구하고 =>
//4. 이 수들을 모두 더한다.
//5. 결과를 출력한다.
* 지금 2번가지 하고 나서 4번 할 때 내가 막혔다. 왜 막혔을까?
- 판별했으면 더하기 위해서 그 값을 어딘가에 저장을 해둬야, 넥스트 스탭을 밟을 수 있지. 근데 지금 저장하기 위한 변수를 따로 안 만든 상태잖아. 그러면, 저장하기 위한 변수를 만들고 저장을 먼저 해줘야지.
* 근데 여기서 중요한 건 a의 위치, 처음에 내가 if문 내부에 선언해주게 되면, if문 끝나면 죽어버리잖아. 따라서 제대로 리턴값을 주기 위해선 선언 위치를 전역 변수로 쓸 수 있게끔 만들어줘야지. 따라서 int a 를 밖에 선언해준다.
그럼 여섯번째 줄에서는 a를 선언해줄(만들어) 게 아니라 쓰기만 하면 된다.
제출한 답안
class Solution {
public int solution(int n) { //1번
int a = 0;
for(int i = 0; i<=n; i++) {
if(i % 2 == 0) {
a +=i;
}
}
return a;
}
}