Contents

5명씩, 주어진 문자열 리스트를 5명씩 끊어서 제일 앞의 문자만 모아 배열로 출력하는 방법에 대하여(with.Java)

   Oct 3, 2023     1 min read

5명씩, 주어진 문자열 리스트를 5명씩 끊어서 제일 앞의 문자만 모아 배열로 출력하는 방법에 대하여 알아본 글입니다.

코딩 테스트 문제를 풀며, 풀었던 문제에 대한 회고와 다른 풀이 방법을 알아보며, 알아가고자 합니다.

문제에 대해 먼저 알아보겠습니다.

문제

최대 5명씩 탑승가능한 놀이기구를 타기 위해 줄을 서있는 사람들의 이름이 담긴 문자열 리스트 names가 주어질 때, 앞에서 부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return하도록 solution 함수를 완성해주세요.

마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함합니다.

입출력 예시

names: [“nami”, “ahri”, “jayce”, “garen”, “ivern”, “vex”, “jinx”]

result: [“nami”, “vex”]

문제에 대한 나의 풀이

class Solution {
    public String[] solution(String[] names) {
        String[] answer = new String[(int)Math.ceil(names.length / 5.0)];
        int count = 0;
        for(int i = 0; i < names.length; i += 5){
            answer[count++] = names[i];
        }
        return answer;
    }
}
풀이 설명

함수의 반환 타입은 String[]이며, names라는 문자열 배열을 인자로 받습니다.

answer 배열을 생성하며, 그룹의 개수를 계산하여 배열 크기를 결정합니다. count 변수는 answer 배열에 값을 넣을 때 사용됩니다.주의할 점은 Java에서 정수끼리의 나눗셈은 결과가 정수로 반환되어 소수 부분이 버려지기 때문에, 예상과 다른 결과가 발생할 수 있습니다.

그렇기 때문에 그룹의 개수를 계산할 때 실수형으로 나누어야 정확한 값을 얻을 수 있습니다. 때문에 5.0으로 올림처리를 해주었습니다.

반복문을 통해 각 그룹을 처리합니다. i 변수는 현재 그룹의 시작 인덱스를 나타내고, groupSize 변수는 현재 그룹의 크기를 결정합니다.

그룹에 속하는 사람들의 이름을 groupNames에 추가합니다. i + j를 통해 실제 인원들의 인덱스를 찾아서 이름을 가져옵니다.

각 그룹의 이름을 하나의 문자열로 만들어 answer 배열에 저장합니다. 문자열의 앞뒤 공백을 제거한 후 저장합니다.

완성된 answer 배열을 반환하여 함수의 결과로 제공합니다.