홀짝에 따라 다른 값 반환하기

nacSeo (낙서)·2023년 12월 29일
0

프로그래머스

목록 보기
9/169

문제 설명

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

제한 사항

1 ≤ n ≤ 100

나의 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        if(n%2==1) {
            for(int i=0; i<=n; i++) {
                if(i%2==1) {
                    answer += i;
                }
            }
        } else if(n%2==0) {
            for(int i=0; i<=n; i++) {
                if(i%2==0) {
                    answer += i*i;
                }
            }
        }
        return answer;
    }
}

다른 사람 코드

class Solution {
    public int solution(int n) {
            int answer = 0;
        if (n % 2 == 0) {
            for (int i = 2; i <= n; i += 2) {
                answer += i * i;
            }
        } else {
            for (int i = 1; i <= n; i += 2) {
                answer += i;
            }
        }
        return answer;
    }
}

반복문에서 i++대신 i+=2로 반복을 줘서 내가 짠 코드보다 간단

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

            for(int i = n; i >= 0; i -= 2)
                answer += (n % 2 == 0) ? i * i : i;

        return answer;
    }
}

삼항 연산자 사용

class Solution {
    public int solution(int n) {
        int answer = 0;
        if (n % 2 == 0)
            for (int i = 2; i <= n; i += 2) answer += Math.pow(i, 2);
        else 
            for (int i = 1; i <= n; i += 2) answer += i;
        return answer;
    }
}

Math.pow()함수 사용

import java.util.stream.IntStream;

class Solution {
    public int solution(int n) {
        return n % 2 != 0 ? IntStream.iterate(1, i -> i <= n, i -> i + 2).sum() : (int) IntStream.iterate(2, i -> i <= n, i -> i + 2).mapToDouble(operand -> Math.pow(operand, 2)).sum();
    }
}

Stream과 람다식 활용

느낀 점

살짝만 복잡해져도 사고한대로만 코드를 작성하게 되면서 코드식이 길어진다.
먼저, 머릿속에서 정리 후 어떤 방법이 가장 좋은 코드일 지 고민해보자. Stream과 람다식은 진짜 🤯

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글