[프로그래머스] Java 코딩테스트 - n개 간격의 원소들

yihyun·2025년 4월 17일

코딩테스트

목록 보기
50/105
post-thumbnail

n개 간격의 원소들

✅ 문제 설명

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

✅ 제한사항

5 ≤ num_list의 길이 ≤ 20
1 ≤ num_list의 원소 ≤ 9
1 ≤ n ≤ 4

🔽 소스코드 1 (Arrays.copyOf 사용)

💻 풀이

  • 반복문을 사용해 n의 수만큼 인덱스를 증가하여 새로운 배열에 담아준다.
  • 이때 return하는 배열의 길이는 홀수, 짝수를 비교해 넣어줘도 되지만
  • 배열의 길이가 되어줄 j를 따로 선언해 주고
  • Arrays.copyOf()를 사용해 j의 길이만큼 배열의 길이를 수정해 반환해주었다.

시간 0.02ms ~ 0.03ms

import java.util.*;
	public int[] solution(int[] num_list, int n) {
		
		int[] answer = new int[num_list.length];
		int j = 0;
		
		for(int i = 0; i < num_list.length; i += n) {
			answer[j] = num_list[i];
			j++;
		}
		return Arrays.copyOf(answer, j);
	}

🔽 소스코드 2 (List와 stream 사용)

💻 풀이

  • 배열의 크기를 초기에 선언하지 않고, List를 선언해 준 후
  • num_list의 값을 n의 간격으로 List에 담아준다.
  • 이후 stream()mapToInt(i -> i) , toArray() 를 사용해 int 배열로 변환한 후 반환해 준다.

시간 1.83ms ~ 3.34ms

전체코드

import java.util.*;
	public int[] solution1(int[] num_list, int n) {
		
		
		List<Integer> list = new ArrayList<>();
		
		for(int i = 0; i < num_list.length; i += n) {
			list.add(num_list[i]);
		}
		
		return list.stream().mapToInt(i -> i).toArray();
	}
profile
개발자가 되어보자

0개의 댓글