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

KIMYEONGJUN·2026년 5월 5일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

Main10 클래스 안에 main 메서드가 있어 프로그램 실행의 시작점 역할을 한다.
main 메서드에서 Main10 클래스의 객체 sol을 생성하고, 두 개의 테스트용 정수 n1=7과 n2=10을 준비한다.
sol.solution(n1)과 sol.solution(n2)를 호출하여 각 값에 대한 결과를 출력한다.
입력받은 n이 홀수인 경우 (n % 2 != 0), 1부터 n까지의 모든 홀수를 더한다. 이때 반복문에서 i를 2씩 증가시켜 홀수만 조회한다.
n이 짝수인 경우, 2부터 n까지 모든 짝수의 제곱을 더한다. 마찬가지로 반복문에서 i를 2씩 증가시켜 짝수만 다룬다.
계산된 값을 answer에 누적한 뒤 최종적으로 반환한다.
예를 들어 n이 7이라면 1, 3, 5, 7의 합인 16을 반환하고, n이 10이라면 2²+4²+6²+8²+10²=220을 반환한다.

코드로 구현

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

프로그래머스 코드

package programmers;

// 프로그래머스 홀짝에 따라 다른 값 반환하기
public class Main10 {
    public static void main(String[] args) {
        Main10 sol = new Main10();
        int n1 = 7;
        int n2 = 10;

        System.out.println(sol.solution(n1)); // 16 출력
        System.out.println(sol.solution(n2)); // 220 출력
    }

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

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글