[JAVA] 프로그래머스 : 짝수는 싫어요

문제 설명

정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

My Solution

Code

class Solution {
    public int[] solution(int n) {
        // 홀수의 개수를 구하는 방법
        int count_odds = 0;
        if (n % 2 != 0) { // n이 짝수일 떄
            count_odds = (n / 2) + 1;
        } else { // n이 홀수일 때
            count_odds = (n / 2);
        }


        int[] answer = new int[count_odds];
        int count2 = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 2 != 0) {
                answer[count2] = i;
                count2++;
            }
        }
        return answer;
    }
}

Approach

  1. 정답 배열(answer)에 원소를 할당하기 위해 고정적인 크기를 구함
    1. 문제에서 주어진 N이 홀수이거나 짝수일 수 있음
    2. 따라서 N이 홀수 or 짝수일떄 “홀수의 개수”를 구해야함
      1. N이 짝수일 때, 홀수의 개수 = (N / 2);
      2. N이 홀수일 떄, 홀수의 개수 = (N / 2) + 1;
  2. 이후 for loop를 통해 N 이하의 원소들을 반복하면서 홀수들만 배열에 따로 저장 후 리턴

Review

  • 정답 배열을 초기화하기 위해 선언된 answer 배열을 만들어놓는게 좋을까 ? 혹은 ArrayList를 통해 처리하는게 좋을까 ?

Enhanced

다른 사람 풀이

01. ArrayList를 활용한 풀이

public ArrayList<Integer> solution2(int n) {  
    ArrayList<Integer> arr = new ArrayList<>();  
  
    for (int i = 1; i <= n; i++) {  
        if (i % 2 != 0) {  
            arr.add(i);  
        }  
    }  
    return arr;  
}
  • 고정된 크기를 할당하는 배열을 따로 선언하지 말고 ArrayList를 선언한 뒤 처리하기

Categories:

Updated:

Leave a comment