새소식

Programmers Coding Test/Java

[프로그래머스 120824] Java - 코딩테스트 입문 / 짝수 홀수 개수

  • -

 

 

짝수 홀수 개수

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120824

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

1)  문제

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ num_list의 길이 ≤ 100
0 ≤ num_list의 원소 ≤ 1,000

 

 

 

2)  예시

 

 

Result Table
num_list result
[1, 2, 3, 4, 5] [2, 3]
[1, 3, 5, 7] [0, 4]

 

 

 

입출력 예 #1
[1, 2, 3, 4, 5]에는 짝수가 2, 4로 두 개, 홀수가 1, 3, 5로 세 개 있습니다.


입출력 예 #2
[1, 3, 5, 7]에는 짝수가 없고 홀수가 네 개 있습니다.

 

 

 

3)  풀이

 

 

1. 클래스 선언을 해줍니다

● class Solution {

클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.

 

 

 

 

2. 메소드 선언을 해줍니다.

● public int[] solution(int[] num_list) {

정수배열 num_list를 매개변수로 사용하는 solution 메소드를 선언해줍니다.

메소드의 결과값인 solution은 정수배열로 나오므로, 데이터 타입을 int[]로 해줍니다.

 

 

 

 

3. 짝수 개수 및 홀수 개수를 담은 새로운 정수배열 newArray를 생성합니다.

int[] newArray = new int[2];

 

new int[2]  두 개의 정수 값을 저장할 수 있는 공간을 갖는 배열이 되며, 초기화되었기 때문에 모든 요소는 0으로 초기화되어 있습니다.

 

 

 

 

4. num_list 길이 제한 사항을 확인하고, 만족하지 않는다면 예외처리합니다.

if (num_list.length < 1 || num_list.length > 100) {
            throw new IllegalArgumentException("num_list의 길이는 1 이상 100 이하여야합니다");
        }

        

 

 

 

5. 짝수의 개수, 홀수의 개수를 저장하기 위한 변수를 선언하고 초기화해줍니다.

int evenCount = 0;
   int oddCount = 0;

 

eventCount가 짝수, oddCount는 홀수입니다. 이것을 해주는 이유는 차후 for문을 통해 num_list에 있는 원소 하나씩 홀수인지 짝수인지 확인하고, 확인할 때마다 짝수 또는 홀수의 값을 증가시켜주기 위해 새로운 변수를 만들어준 것입니다.

 

 

 

 

6. 먼저 num_list 원소의 크기 제한사항을 확인하고, 그렇지 않다면 예외처리합니다.

제한사항에 만족한다면 num_list 배열을 순회하면서 혹수 또는 짝수를 확인하고, 짝수면 evenCount의 값을 1씩,

그렇지 않으면 oddCount의 값을 1씩 증가시킵니다.

● for (int i = 0; i < num_list.length; i++) {
            if (0 <= num_list[i] && num_list[i] <= 1000) {
                if (num_list[i] % 2 == 0) {
                    evenCount++;
                } else {
                    oddCount++;
                }
            } else {
                throw new IllegalArgumentException("num_list의 원소 크기를 확인하세요");
            }
        }

 

짝수 여부를 판단하는 방법은 2로 나누었을 때 나머지가 0이 되면 됩니다. 즉, 반대로 홀수는 나머지가 1이면 됩니다.

 

 

 

 

7. 최종적으로 num_list 배열의 모든 순환이 끝나면 evenCount 값과 oddCount 값이 모두 계산되어있을 것입니다.

그럼 이걸 newArray의 첫번째 원소에 짝수개수(evenCount)로, newArray의 두번째 원소에 홀수개수(oddCount)로

변경해주면 됩니다.

배열의 첫번째 원소는 index 0번부터이니 아래와 같이 해줍니다.

●      newArray[0] = evenCount;
        newArray[1] = oddCount;

        return newArray;
    }
}

 

 

 

 

 

4)  코드

 

class Solution {
    public int[] solution(int[] num_list) {
        // 결과 배열 선언 및 초기화
        int[] newArray = new int[2];

        // 제한사항 확인
        if (num_list.length < 1 || num_list.length > 100) {
            throw new IllegalArgumentException("num_list의 길이는 1 이상 100 이하여야합니다");
        }

        // 각각의 개수를 세기 위한 변수 초기화
        int evenCount = 0;
        int oddCount = 0;

        // num_list의 각 원소를 순회하면서 홀수와 짝수 개수 계산
        for (int i = 0; i < num_list.length; i++) {
            if (0 <= num_list[i] && num_list[i] <= 1000) {
                if (num_list[i] % 2 == 0) {
                    evenCount++;
                } else {
                    oddCount++;
                }
            } else {
                throw new IllegalArgumentException("num_list의 원소 크기를 확인하세요");
            }
        }

        // 결과 배열에 개수 저장
        newArray[0] = evenCount;
        newArray[1] = oddCount;

        return newArray;
    }
}

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.