
내가 생각했을때 문제에서 원하는부분
최대 5명씩 탑승가능한 놀이기구를 타기 위해 줄을 서있는 사람들의 이름이 담긴 문자열 리스트 names가 주어질 때, 앞에서 부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return하도록 solution 함수를 완성해주세요.
마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함합니다.
내가 이 문제를 보고 생각해본 부분
Main59 클래스에는 main 메서드가 정의되어 있어, 프로그램을 실행하면 이 부분에서 로직이 시작된다.
Solution8 클래스의 solution 메서드는 입력으로 문자열 배열 names를 받는다.
그룹 개수를 구하는 로직은 (names.length + 4) / 5로, 전체 사람 수를 5명씩 묶을 때 나머지 인원을 고려해 올림 처리하는 것이다.
빈 배열 answer를 계산된 그룹 수만큼의 크기로 생성한다.
for 반복문에서 각 그룹의 첫 번째 사람 이름을 answer[i]에 대입한다. 첫 번째 사람은 5명씩 묶었을 때의 그룹 시작 인덱스인 i * 5로 찾는다.
solution 메서드는 이렇게 채운 answer 배열을 반환한다.
main 메서드는 이 결과 배열을 받아 Arrays.toString() 메서드로 [nami, vex]와 같은 형식으로 문자열화하여 출력한다.
코드로 구현
class Solution {
public String[] solution(String[] names) {
int groupCount = (names.length + 4) / 5;
String[] answer = new String[groupCount];
for (int i = 0; i < groupCount; i++) {
answer[i] = names[i * 5];
}
return answer;
}
}
프로그래머스 코드
package programmers;
import java.util.Arrays;
// 프로그래머스 5명씩
public class Main59 {
public static void main(String[] args) {
Solution8 sol = new Solution8();
String[] names = {"nami", "ahri", "jayce", "garen", "ivern", "vex", "jinx"};
String[] result = sol.solution(names);
// 결과 출력
System.out.println(Arrays.toString(result));
}
}
class Solution8 {
public String[] solution(String[] names) {
int groupCount = (names.length + 4) / 5;
String[] answer = new String[groupCount];
for (int i = 0; i < groupCount; i++) {
answer[i] = names[i * 5];
}
return answer;
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.