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

 

머리가 잘 안돌아가서 복잡하게 풀었는데, 다른 분들의 풀이를 보니 훨씬 간단하게 풀었더군요 ..

 

 

문제

양의 정수 n이 매개변수로 주어지고, n이 홀수이면 n 이하의 홀수인 모든 양의 정수의 합을 반환하고, n이 짝수면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 반환하는 메서드를 작성하라.

 

 

 

 

 

나의 답안

class Solution {
    public int solution(int n) {        
        int oddSum = 0;
        int evenSum = 0;

        if (n % 2 == 1) {
            for (int i=1; i <= n; i++) {
                if (i % 2 != 0) {
                    oddSum += i;
                }
            }
            return oddSum;
        } else {
            for (int i=1; i <= n; i++) {
                if (i % 2 == 0) {
                    evenSum += i*i;
                }
            }
            return evenSum;
        }
    }
}

 

 

 

보완사항

  • sum 값을 불필요하게 oddSum, evenSum으로 나누어 선언할 필요 없이 하나의 변수 sum으로 선언
  • for문에서 i값을 2씩 증가시키기

 

class Solution {
    public int solution(int n) {
        int sum = 0;    // 변수 1개만 생성

        if (n % 2 == 1) {
            for (int i = 1; i <= n; i += 2) {    // i값 2씩 증가
                sum += i;
            }
        } else {
            for (int i = 2; i <= n; i += 2) { 
                sum += i * i; 
            }
        }
        return sum;
    }
}