728x90
문제 설명
정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
제한사항
- 5 ≤ num_list의 길이 ≤ 20
- 1 ≤ num_list의 원소 ≤ 9
- 1 ≤ n ≤ 4
입출력 예 #1
- [4, 2, 6, 1, 7, 6]에서 2개 간격으로 저장되어 있는 원소들은 [4, 6, 7]입니다.
입출력 예 #2
- [4, 2, 6, 1, 7, 6]에서 4개 간격으로 저장되어 있는 원소들은 [4, 7]입니다.
class Solution {
public int[] solution(int[] num_list, int n) {
int size = (num_list.length + n - 1) / n;
int[] answer = new int[size];
int index = 0;
for (int i = 0; i < num_list.length; i += n) {
answer[index++] = num_list[i];
}
return answer;
}
}
- num_list.length: 배열의 전체 길이입니다.
- n - 1: 이 값은 배열이 n으로 나누어 떨어지지 않는 경우를 보정합니다. 예를 들어, 배열의 길이가 5이고 n = 2라면, 5개의 원소 중에서 3개(인덱스 0, 2, 4)가 선택되는데, 이 계산을 정확히 하려면 5 + 2 - 1을 2로 나눈 값을 사용해야 합니다.
- / n: 최종적으로, 선택할 수 있는 원소의 수를 얻기 위해 이 값을 n으로 나눕니다.
공식 예제
- 예제 1:
- num_list.length = 6
- n = 2
- size = (6 + 2 - 1) / 2 = 7 / 2 = 3 (정수 나누기 결과는 3입니다)
- 예제 2:
- num_list.length = 10
- n = 3
- size = (10 + 3 - 1) / 3 = 12 / 3 = 4
이 공식은 n 간격으로 원소를 선택할 때, 선택된 원소들의 수를 정확하게 계산하는 방법입니다.
Java
class Solution {
public int[] solution(int[] num_list, int n) {
int count = 0;
for (int i = 0; i < num_list.length; i += n) {
count++;
}
int[] answer = new int[count];
int index = 0;
for (int i = 0; i < num_list.length; i += n) {
answer[index++] = num_list[i];
}
return answer;
}
}
Python
def solution(num_list, n):
answer = []
for i in range(0, len(num_list), n):
answer.append(num_list[i])
return answer
'Coding > Coding Test' 카테고리의 다른 글
[Coding Test]첫 번째로 나오는 음수(java, python, 프로그래머스) (0) | 2024.08.27 |
---|---|
[Coding Test]순서 바꾸기(java, python, 프로그래머스) (0) | 2024.08.26 |
[Coding Test]길이에 따른 연산(java, python,프로그래머스) (0) | 2024.08.26 |
[Coding Test]대문자, 소문자 전환(java, python프로그래머스) (0) | 2024.08.19 |
[Coding Test][PCCE 기출문제] 8번 / 출력(java, python프로그래머스) (0) | 2024.08.12 |