ALGORITHM/코딩 기초 트레이닝

[프로그래머스]홀짝에 따라 다른 값 반환하기

jki09871 2024. 7. 29. 18:14

 

아무리 쉬운 코드도 리뷰 합니다.
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 
모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 
모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

제한사항
1 ≤ n ≤ 100
입출력 예
n	result
7	16
10	220

입출력 예 설명
입출력 예 #1
예제 1번의 n은 7로 홀수입니다. 7 이하의 모든 양의 홀수는 1, 3, 5, 7이고 
이들의 합인 1 + 3 + 5 + 7 = 16을 return 합니다.

입출력 예 #2
예제 2번의 n은 10으로 짝수입니다. 10 이하의 모든 양의 짝수는 2, 4, 6, 8, 10이고 
이들의 제곱의 합인 22 + 42 + 62 + 82 + 102 = 4 + 16 + 36 + 64 + 100 = 220을 return 합니다.
 ----------------------------------------------------------------------------------
class Solution {
    public int solution(int n) {
        int answer = 0;
        if (n % 2 == 1) { // n이 홀수인 경우
            for (int i = 1; i <= n; i += 2) { // 1부터 n까지 홀수만 더함
                answer += i;
            }
        } else { // n이 짝수인 경우
            for (int i = 2; i <= n; i += 2) { // 2부터 n까지 짝수의 제곱만 더함
                answer += i * i;
            }
        }
        return answer;
    }
}

설명

  1. 반복문: for 반복문을 이용하여 변수 i가 변수 n 값보다 작거나 같을 때까지 반복합니다.
    • 반복문 내부에서 i는 각각의 홀수 또는 짝수로 설정됩니다.
  2. 조건문: if 문을 사용하여 n이 홀수인지 짝수인지 판단합니다.
    • 만약 n이 홀수라면, n % 2 == 1이 됩니다 (참).
    • 만약 n이 짝수라면, n % 2 == 0이 됩니다 (참).

예제 설명

  • 예를 들어, n이 7이라면:
    1. n % 2 == 1이 되므로 조건은 참입니다.
    2. for 반복문에서 변수 i는 1부터 시작하여 2씩 증가합니다 (즉, 1, 3, 5, 7이 됩니다).
    3. 첫 번째 반복에서 i는 1이고, 1 % 2 == 1이 되므로 조건은 참입니다.
    4. 따라서 answer에 1이 더해집니다 (answer = 1).
    5. i는 2 증가하여 3이 되고, 다시 조건을 만족하여 answer에 3이 더해집니다 (answer = 4).
    6. 이 과정을 반복하여 최종적으로 answer는 16이 됩니다 (1 + 3 + 5 + 7).
  • 만약 n이 10이라면:
    1. n % 2 == 0이 되므로 조건은 참입니다.
    2. for 반복문에서 변수 i는 2부터 시작하여 2씩 증가합니다 (즉, 2, 4, 6, 8, 10이 됩니다).
    3. 첫 번째 반복에서 i는 2이고, answer에 2의 제곱이 더해집니다 (answer = 4).
    4. i는 2 증가하여 4가 되고, 다시 answer에 4의 제곱이 더해집니다 (answer = 20).
    5. 이 과정을 반복하여 최종적으로 answer는 220이 됩니다 (2^2 + 4^2 + 6^2 + 8^2 + 10^2).

주요 코드 설명

  1. 조건문:
    • if (n % 2 == 1): n이 홀수인지를 확인하는 조건문입니다. n을 2로 나눈 나머지가 1이면 홀수입니다.
    • else: n이 짝수인 경우입니다.
  2. 홀수인 경우:
    • for (int i = 1; i <= n; i += 2): 1부터 n까지 2씩 증가하는 반복문입니다. 이 반복문은 홀수만을 순회합니다.
      • answer += i: 홀수인 i를 answer에 더합니다.
  3. 짝수인 경우:
    • for (int i = 2; i <= n; i += 2): 2부터 n까지 2씩 증가하는 반복문입니다. 이 반복문은 짝수만을 순회합니다.
      • answer += i * i: 짝수인 i의 제곱을 answer에 더합니다.

실행결과

정확성 테스트
테스트 1 통과 (0.02ms, 77MB)
테스트 2 통과 (0.02ms, 76.3MB)
테스트 3 통과 (0.02ms, 72.3MB)
테스트 4 통과 (0.01ms, 74.4MB)
테스트 5 통과 (0.02ms, 74.6MB)
테스트 6 통과 (0.02ms, 79.3MB)
테스트 7 통과 (0.03ms, 75MB)
테스트 8 통과 (0.03ms, 75MB)
테스트 9 통과 (0.02ms, 74.8MB)
테스트 10 통과 (0.02ms, 76.7MB)
테스트 11 통과 (0.02ms, 78.2MB)
테스트 12 통과 (0.03ms, 72.3MB)
테스트 13 통과 (0.03ms, 73.2MB)
테스트 14 통과 (0.03ms, 74.7MB)
테스트 15 통과 (0.02ms, 73.1MB)
테스트 16 통과 (0.02ms, 77.9MB)
테스트 17 통과 (0.01ms, 73.7MB)
테스트 18 통과 (0.03ms, 72.7MB)
테스트 19 통과 (0.01ms, 76.1MB)
테스트 20 통과 (0.02ms, 78.3MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0