짝수는 싫어요 Lv. 0

박영준·2023년 4월 18일
0

코딩테스트

목록 보기
50/300

문제 설명

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

class Solution {
    public int[] solution(int n) {
        int[] answer = {};
        return answer;
    }
}

제한 사항

  • 1 ≤ n ≤ 100

입출력 예

입출력 예 설명

  • 입출력 #1

    • 10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.
  • 입출력 #1

    • 15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.

해결법

방법 1

import java.util.ArrayList;

class Solution {
    public ArrayList solution(int n) {
        ArrayList<Integer> list = new ArrayList<Integer>();       // 선언 : Integer 타입으로 홀수를 담을 list
        
        for(int i = 1; i <= n; i += 2) {        // 1부터 매개변수n까지 2씩 더하면서
            list.add(i);        // 값 추가 : list에 추가
        }
        
        return list;
    }
}

방법 2

import java.util.*;

class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>();		// 선언 : new 연산자 일 경우, 타입 파라미터 생략 가능

        for (int i = 1; i <= n; i++) {
            if (i % 2 != 0) {
            	list.add(i);        // 값 추가 : list에 추가
            }    
        }
        
        int[] answer = new int[list.size()];		// 선언
        
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);		// 값 출력
        }

        return answer;
    }
}

방법 3

class Solution {
    public int[] solution(int n) {
        int cnt = 0;

		// 전체 수 中 홀수만 구하기 -> 홀수들이 들어갈 배열을 생성하기 위해
        if(n % 2 == 0) {		// n 이 짝수일 경우
        	cnt = n/2;
        } else {		// n 이 홀수일 경우
        	cnt = n/2 + 1;
		}

		// cnt 를 담은 새로운 배열 arr 를 생성
        int[] arr = new int[cnt];
        
        int num = 1;

        for (int i = 0; i < arr.length; i++) {
            arr[i] = num;
            num += 2;
        }

        return arr;
    }
}
  • cnt = n/2, cnt = n/2 + 1
    • 전체 수는 짝수와 홀수로 구성되어 있는데, 홀수는 전체 수의 개수의 1/2

방법 4

class Solution {
    public int[] solution(int n) {
        int[] answer = {};

		// 전체 수 中 홀수만 구하기 -> 홀수들이 들어갈 배열을 생성하기 위해
        if(n % 2 == 0) {		// n 이 짝수일 경우
        	answer = new int[n/2];
        } else {		// n 이 홀수일 경우
        	answer = new int[n/2 + 1];
		}
        
        int cnt = 0;

        for (int i = 1; i <= n; i += 2) {
        	answer[cnt] = i;
            cnt++;
        }

        return answer;
    }
}
  • 새로운 배열을 생성하지 않는 방법

짝수는 싫어요

profile
개발자로 거듭나기!

0개의 댓글