프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 짝수는 싫어요(Java)

Sigfriede 2023. 3. 23. 01:20

  문제 설명

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

 

  제한사항

  • 1 <= n <= 100

 

  입출력 예

n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]
class Solution {
    public int[] solution(int n) {
        int[] answer;
        if (n % 2 == 0) {
            answer = new int[n / 2];
        } else {
            answer = new int[(n + 1) / 2];
        }
        
        for (int i = 0; i < answer.length; i++) {
                answer[i] = (i * 2) + 1;
            }
        return answer;
    }
}

  if문을 통해 answer 배열의 길이를 정해주었습니다. 만약 정수 n이 짝수라면 배열의 길이는 n의 절반이고 그렇지 않다면 n 1을 더한 후 절반으로 나누었습니다. (절반으로 나눈 후 1을 더해도 결과적으로는 같습니다.) 이후 answer 배열의 길이만큼 for문을 순회하면서 answer 배열에 차곡차곡 정답이 쌓입니다.

 

(0  *  2) + 1, (1 * 2) + 1, (2 * 2) + 1….

 

  for문을 순회하면서 작은 수부터 입력되므로 따로 배열 정리는 하지 않았습니다.

  ArrayList를 통해 저처럼 배열크기를 지정하지 않고 푸는 분도 있었지만, stream을 통해 간단하게 푸는 분을 제외하고 대체로 대동소이한 코드들이었습니다. i 값을 어떻게 도출해내느냐 정도의 차이였던 것 같아요. 

 

  눈물과 비명의 3일차 클리어였습니다.