개발자 미니민의 개발스터디

[JAVA] 자바 - shuffle이용해서 조 편성하기

by mini_min

[JAVA]
자바 - shuffle로 조편성하기

✔️ collections 에서 셔플

컬렉션에서 셔플 실행하는거 ok. 무작위 섞기하는거 알겠다.

셔플로 조편성하기 위해서 주어진 것.

= String 배열 (21명 존재)

 

그리고 조편성을 위해 필요한 것. String[][] 배열!!

그룹수는 cnt 4를 받는다. 21명을 4조로 만들건데, 자연스럽게 조1개는 +1명 더 받아낼 것.

 

String [] aa = new String[] {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "n", "m", "o", "p", "q", "r", "s", "t", "u"};


//필요한 것 : 무작위 섞기해서 출력할 조 테이블~
String[][] group = null;
int cnt = 4;

 

 

 

💡 이제 이 조에서 그룹별 최대 인원을 받는 계산을 만들 것.
아쉽게도, aa 배열의 길이는 21... 즉, aa.length / cnt+1
int inwon aa.length%cnt ==0 ? aa.length / cnt : aa.length / cnt+1 ;
group = new String [cnt][inwon];

 

 

 

Collections.shuffle(Arrays.asList(aa));
//배열이니까 어레이 리스트에 리스트로 선언하고 셔플

int n=0;
gogo:
for(int col=0; col<inwon; col++) {
	for(int row=0; row<cnt; row++) {
		group[row][col] = aa[n++];
    	if(n >= aa.length) {
    		break gogo; //아예 for 문장 탈출
    	}
    }
}

for(int i=0; i<cnt; i++){
	System.out.println((i+1) + " 조 : ");
    for(int j=0; j<inwon; j++) {
    	if(group[i][j] != null) {
        	System.out.print(group[i][j] + "  ");
        }
   	}
}
💡 (아래 for 문은 출력하기 위한 for 문이다.)
위에 gogo : 이 부분은 aa List 에 있는 값들을 순차적으로 출력하기 위함.
aa.length가 0이 된 순간, (고갈되면) 다시 length 로 돌아가서 for 문을 처음부터 실행.
이때, inwon 수는 앞전에 실행된 for 문 실행이 찍힌게 빠져서 aa.length%cnt가 다시 실행되는 꼴..
즉, 이때 inwon은 5가 되고, 앞전에는 inwon 이 6이었다. 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기