[Programmers] 코딩테스트 입문 120813. 짝수는 싫어요

이지현·2023년 1월 31일
0

Algorithm

목록 보기
7/81
post-thumbnail

✔️ Problem URL

짝수는 싫어요


✔️ Problem

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


✔️ Code

class Solution {
    public int[] solution(int n) {
        int[] answer = {};
        int index = 0;
        
        for(int i = 1; i <= n; i+=2) {
            answer[index] = i;
            index++;
        }
        return answer;
    }
}

위와 같이 코드를 작성하였더니 ArrayIndexOutOfBoundsException이 발생하였다. 요즘 제일 많이 발생하는 오류이다. 발생 원인을 찾아보았더니 여러가지 경우가 존재했다.

  1. 배열에 할당된 크기를 넘어서 접근했을 때
  2. 전역 배열의 크기가 메모리 제한을 초과할 때
  3. 지역 배열의 크기가 스택 크기 제한을 넘어갈 때
  4. 0으로 나눌 떄
  5. 라이브러리에서 예외를 발생시켰을 때
  6. 재귀 호출이 너무 깊어질 때
  7. 이미 해제된 메모리를 또 참조할 때
  8. 프로그램(main 함수)이 0이 아닌 수를 반환했을 때

💡 배열 answer의 크기가 실제로 커지지 않아서 1번의 경우가 발생한 것 같다. 해당 부분을 수정하니 오류가 해결되었다.

class Solution {
    public int[] solution(int n) {
        int[] answer = new int[n/2 + n%2];
        int index = 0;
        
        for(int i = 1; i <= n; i+=2) {
            answer[index] = i;
            index++;
        }
        return answer;
    }
}
profile
2023.09 ~ 티스토리 이전 / 2024.04 ~ 깃허브 블로그 이전

0개의 댓글