코드 그라데이션

[lv.0] 짝수의 합 본문

Java/알고리즘

[lv.0] 짝수의 합

완벽한 장면 2023. 1. 25. 11:58

일단, 사람에게 시키듯이 쭉 한글로 써보고 나서 코드로 구현하자.

이건 프로젝트를 수행할 때도 필요한 부분이다.

 

짝수의 합

문제 설명

정수 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;
    }
}
728x90

'Java > 알고리즘' 카테고리의 다른 글

[Lv.1] 행렬의 덧셈  (0) 2023.02.02
[lv.0] 배열의 평균값  (0) 2023.01.25
[lv.0] 나머지 구하기  (0) 2023.01.25
[lv.0] 각도기 만들기  (0) 2023.01.25
[lv.0] 369게임  (0) 2023.01.24
Comments