유난스런 개발 기록

[JAVA] 프로그래머스 - 짝수는 싫어요 본문

알고리즘

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

yourhwan 2023. 10. 3. 16:19

 

 

문제를 처음 보았을 때 생각이 났던 방법은 ArrayList를 사용하는 것이었지만, 주어진 리턴 타입을 유지하고자 했다.

 

int k 배열 answer에서 k에 해당하는 인덱스 값을 의미하며 for문을 실행할 때 1씩 증가한다.

i가 홀수일 경우 인덱스 번호 k에 할당이 되며, 조건을 충족할 때까지 반복문을 실행한다.

 

사실 개인적으로 ArrayList를 사용하는 것이 더 편했을 거 같다.

동적으로 배열의 크기가 조정되며 배열의 size만큼 반복문을 돌리면 되기 때문에 생각할 것이 더 줄어드는 느낌이랄까

 

정답 코드

class Solution {
    public int[] solution(int n) {
        int[] answer = new int[(n+1)/2]; //홀수 개수만큼의 배열의 크기 설정.
        int k = 0;

        for(int i=1; i<=n; i++) { // 배열의 크기만큼 반복문을 실행, 조건문에 충족되면 배열에 추가해준다.
            if(i%2 == 1) {
                answer[k] = i; // i를 2로 나누었을 때 나머지가 1인 경우, 즉 홀수 일 경우 배열에 추가해준다. 이후 k는 1씩 증가해주며 배열을 순회한다.
                k++;
            }
        }

        return answer;
    }
}

 

ArrayList를 사용한 코드

import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<Integer> solution(int n) {
        List<Integer> answer = new ArrayList<>();
        
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 1) {
                answer.add(i);
            }
        }
        
        return answer;
    }
}

 

프로그래머스에서 문제는 나름 꾸준히 풀고 있지만, 블로그에 공부했던 것을 정리해서 올리는 일은 쉽지 않은 듯