콘솔창에서 구현한 랜덤 팀 추첨입니다. 사람수,팀수,사람이름을
입력받고 랜덤으로 팀을 배정하여 출력합니다. 사람수/팀수 가
나누어 떨어지지 않을 시 인원이 누락되는 것을 해결하지 못했습니다.
제작일시는 21.10.09 소요시간은 5시간입니다.
package RandomSadari;
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{ Random random = new Random();
Scanner sc = new Scanner(System.in);
int k=0;
System.out.println("사람수 입력:");
int num_crew = sc.nextInt(); //사람수 = num_crew 입력받기
System.out.println("팀수입력 :");
int crew = sc.nextInt(); //팀수 = crew 입력받기
int div_crew = num_crew/crew;
String[] name_crew = new String[num_crew]; // 사람이름 = name_crew배열 생성
int[] num_random = new int[num_crew]; //팀추첨 변수 = num_random 생성
String[][] crew2 = new String[crew][div_crew]; //나눈 팀원들을 담을 배열
for(int i=0;i<name_crew.length;i++) // 사람이름 입력받기
{ System.out.println(i+1 +"번째 사람이름 입력 :" );
name_crew[i] = sc.next();
}
for (int i = 0; i < num_random.length; i++)
{
num_random[i] = random.nextInt(num_crew); // 팀원 추첨할 변수 배열 생성- 중복없음
for(int j=0; j<i; j++)
{
if(num_random[i]==num_random[j]) {i--; break;}
}
}
for (int i = 0; i < crew2.length; i++)
{
for (int j = 0; j < crew2[i].length; j++)
{
crew2[i][j] = name_crew[num_random[k]];
k++;
}
}
for(int i=0;i<crew2.length;i++)
{ System.out.print(i+1+"팀 ");
System.out.println(Arrays.toString(crew2[i]));
}
sc.close();
}
}
예를 들어 5명을 2팀으로 나눌때
1팀 사람3, 사람5
2팀 사람1 ,사람4
이런식으로 한명이 누락된다.
crew2의 열 길이가 div_crew로 설정되어서 이런 문제가 발생했는데 고민을 많이 했지만 해결하지 못했다.
로또 번호 생성기를 만들때 썼던 로직을 활용해서 만들었다.
name_crew[num_random[k]] <= 이 로직을 구현할때 구글링으로도 못찾고 너무 어려워서
골머리를 싸매면서 저거 하나만 4시간을 고민해서 결국엔 생각해냈다.
문제점은 ArrayList<String[]>을 써서 해결 할 수 있을것같다. 시간이 되면 해결해서 다시 올려봐야겠다.