성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] n개 간격의 원소들 (Math클래스) - JAVA

와나나나 2023. 8. 30. 14:51
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 13 - (5)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181888

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 |  정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

 

입력 #1 | num_list = [4, 2, 6, 1, 7, 6], n = 2

출력 #1 | [4,6,7]


>> 풀이 <<

배열의 특성상 크기를 먼저 지정해줘야 하기 때문에, '전체크기 / 간격' 올림을 이용해 크기를 설정해주었다. 그 이후에는 for문을 통해 배열에 값을 넣어주었다.

 

  • 나눗셈 올림하기 - Math.ceil()
    • Math.ceil(나눗셈식)을 통해 값을 올림할 수 있다. 이때 반환값은 double형이기 때문에 int형으로 반환하고 싶으면 (int) Math.ceil() 해줘야 한다.
    • Math.ceil() 속에 나눗셈 식을 넣을 때에는 (double)을 넣어줘야 한다! 소수점이 있어야 올림 또는 내림을 할 수 있기 때문이다.

추가적으로 내림과 반올림도 가능하다.

  • 반올림 - Math.round()
  • 내림 - Math.floor()

코드는 다음과 같다.

import java.lang.*;
class Solution {
    public int[] solution(int[] num_list, int n) {
        int size = (int) Math.ceil((double) num_list.length / n);
        int[] answer = new int[size];
        int j = 0;
        for (int i = 0 ; i < num_list.length ; i += n) {
            answer[j++] = num_list[i];
        }
        return answer;
    }
}