[Programmers] #181886 - 5명씩 [Java][C++][Python]
줄 서 있는 사람들의 이름 리스트에서 앞에서부터 5명씩 묶은 각 그룹의 맨 앞 사람 이름만 모아 반환하는 워밍업 문제.
[Programmers] #181886 - 5명씩 [Java][C++][Python]
1. 아이디어
앞에서부터 5명씩 묶으므로 각 그룹의 맨 앞 사람은 인덱스 0, 5, 10, …에 위치한다. 시작 인덱스부터 5칸 간격으로 원소를 골라 순서대로 담으면 된다. 마지막 그룹이 5명이 안 되어도 맨 앞 사람은 항상 존재하므로, 그룹 수이자 결과의 길이는 $\lceil N / 5 \rceil$이다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(N)$ | $O(N)$ |
($N$ = names의 길이)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public String[] solution(String[] names) {
String[] arr = new String[(names.length + 4) / 5];
int idx = 0;
for (int i = 0; i < names.length; i += 5) {
arr[idx++] = names[i];
}
return arr;
}
}
1
2
3
4
5
6
7
8
9
10
11
#include <bits/stdc++.h>
using namespace std;
vector<string> solution(vector<string> names) {
vector<string> v;
for (int i = 0; i < names.size(); i += 5) {
v.push_back(names[i]);
}
return v;
}
1
2
def solution(names):
return names[::5]
This post is licensed under CC BY 4.0 by the author.