Post

[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.