/* 뺑뺑이 만들기
각 중학교 1차원 배열
* 문제) 2009년도 대전 시내 초등학교 졸업생이 200명이다. (0~199번) 이 학생들을
대전중학교에 45명, 한밭중학교에 40명, 갈마중학교에 30명, 둔산중학교에 50명,
성모중학교에 35명을 배정하라. 그리고 위와 같이 학교별 배정 학생번호 리스트와
학번별 학교배정 리스트를 출력하시오.
*/
public class HomeWork02 {
public static void main(String[] args) {
int[] 학번 = 학생번호(200);
int[] 배당학교 = 뺑뺑이(학번);
int num = 0;
for(int i = 0 ; i < 중학교.length ; i++){
HomeWork02 hw = new HomeWork02();
System.out.println("============================================================================");
System.out.println("학교명 : " + 중학교[i]);
System.out.println("============================================================================");
for(int j = 0 ; j < 학번.length ; j ++){
if(배당학교[j] == i){
System.out.print(학번[j] + "\t");
num += 1;
if(num % 10 == 0) System.out.println(" ");
}
}
System.out.println("학생수 : " + num);
num = 0;
System.out.println("============================================================================");
System.out.println(" ");
System.out.println(" ");
}
System.out.println("============================================================================");
System.out.println("\t번호\t학교번호\t학교명\t누적학생수");
System.out.println("============================================================================");
int[] 누적학생수 = new int[중학교.length];
for(int i = 0 ; i < 학번.length ; i++){
for(int j = 0 ; j < 중학교.length ; j++){
if(j == 배당학교[i]){
누적학생수[j] += 1;
System.out.printf("%10d\t%8d\t%6s\t%6d\n", 학번[i], 배당학교[i], 중학교[j], 누적학생수[j]);
}else{
}
}
}
System.out.println("============================================================================");
}
static int[] 뺑뺑이(int[] a){
int[] x = new int[a.length]; // 학교배정 x
int 대전중학생수 = 0, 한밭중학생수 = 0, 갈마중학생수 = 0,
둔산중학생수 = 0, 성모중학생수 = 0;
int total = 0;
while(total < a.length){
gogo : for(int i = 0 ; i < a.length ; i++){
x[i] = (int)(Math.random()*5);
if(x[i] == 0){
if(대전중학생수 >= 45){
i = i - 1;
continue gogo;
}else{
대전중학생수 += 1;
}
}
else if(x[i] == 1){
if(한밭중학생수 >= 40){
i = i - 1;
continue gogo;
}else{
한밭중학생수 += 1;
}
}
else if(x[i] == 2){
if(갈마중학생수 >= 30){
i = i - 1;
continue gogo;
}else{
갈마중학생수 += 1;
}
}
else if(x[i] == 3){
if(둔산중학생수 >= 50){
i = i - 1;
continue gogo;
}else{
둔산중학생수 += 1;
}
}
else{
if(성모중학생수 >= 35){
i = i - 1;
continue gogo;
}else{
성모중학생수 += 1;
}
}
}
total = 대전중학생수 + 한밭중학생수 + 갈마중학생수 +
둔산중학생수 + 성모중학생수;
}
return x;
}
static int[] 학생번호 (int a){
int[] 번호 = new int[a];
for(int i = 0 ; i < a ; i++){ // 학생번호 생성
번호[i] = i;
}
return 번호;
};
static String[] 중학교 = new String[]{
"대전중학교", "한밭중학교", "갈마중학교", "둔산중학교", "성모중학교"
};
}
public static void main(String[] args) {
int[] 학번 = 학생번호(200);
int[] 배당학교 = 뺑뺑이(학번);
int num = 0;
for(int i = 0 ; i < 중학교.length ; i++){
HomeWork02 hw = new HomeWork02();
System.out.println("============================================================================");
System.out.println("학교명 : " + 중학교[i]);
System.out.println("============================================================================");
for(int j = 0 ; j < 학번.length ; j ++){
if(배당학교[j] == i){
System.out.print(학번[j] + "\t");
num += 1;
if(num % 10 == 0) System.out.println(" ");
}
}
System.out.println("학생수 : " + num);
num = 0;
System.out.println("============================================================================");
System.out.println(" ");
System.out.println(" ");
}
System.out.println("============================================================================");
System.out.println("\t번호\t학교번호\t학교명\t누적학생수");
System.out.println("============================================================================");
int[] 누적학생수 = new int[중학교.length];
for(int i = 0 ; i < 학번.length ; i++){
for(int j = 0 ; j < 중학교.length ; j++){
if(j == 배당학교[i]){
누적학생수[j] += 1;
System.out.printf("%10d\t%8d\t%6s\t%6d\n", 학번[i], 배당학교[i], 중학교[j], 누적학생수[j]);
}else{
}
}
}
System.out.println("============================================================================");
}
static int[] 뺑뺑이(int[] a){
int[] x = new int[a.length]; // 학교배정 x
int 대전중학생수 = 0, 한밭중학생수 = 0, 갈마중학생수 = 0,
둔산중학생수 = 0, 성모중학생수 = 0;
int total = 0;
while(total < a.length){
gogo : for(int i = 0 ; i < a.length ; i++){
x[i] = (int)(Math.random()*5);
if(x[i] == 0){
if(대전중학생수 >= 45){
i = i - 1;
continue gogo;
}else{
대전중학생수 += 1;
}
}
else if(x[i] == 1){
if(한밭중학생수 >= 40){
i = i - 1;
continue gogo;
}else{
한밭중학생수 += 1;
}
}
else if(x[i] == 2){
if(갈마중학생수 >= 30){
i = i - 1;
continue gogo;
}else{
갈마중학생수 += 1;
}
}
else if(x[i] == 3){
if(둔산중학생수 >= 50){
i = i - 1;
continue gogo;
}else{
둔산중학생수 += 1;
}
}
else{
if(성모중학생수 >= 35){
i = i - 1;
continue gogo;
}else{
성모중학생수 += 1;
}
}
}
total = 대전중학생수 + 한밭중학생수 + 갈마중학생수 +
둔산중학생수 + 성모중학생수;
}
return x;
}
static int[] 학생번호 (int a){
int[] 번호 = new int[a];
for(int i = 0 ; i < a ; i++){ // 학생번호 생성
번호[i] = i;
}
return 번호;
};
static String[] 중학교 = new String[]{
"대전중학교", "한밭중학교", "갈마중학교", "둔산중학교", "성모중학교"
};
}
반응형
'개발 > JAVA' 카테고리의 다른 글
Java에서 json 형태로 화면으로 떨구기 (0) | 2019.06.17 |
---|---|
자바 jsoup lib를 이용하여 크롤링 연습 (0) | 2019.05.27 |
ExecutorService 를 사용하여 스레드수를 제한하여 사용하기 (0) | 2019.03.20 |
java 배열 선언 (0) | 2019.02.22 |
ToStringBuilder 사용하여 콘솔에 VO 변수정보 표시 (0) | 2019.01.29 |