'배열'에 해당되는 글 2건

  1. 2013.06.24 배열(Array) 연습문제
  2. 2013.06.20 배열(Array)

package Exercise5;

public class Exercise5_3 {

 public static void main(String[] args) {

  int[] arr = {10,20,30,40,50};
  
  int sum = 0;
  
  for (int i = 0; i < arr.length; i++) {
   sum = sum+arr[i];
  }
  System.out.println("sum : "+sum);
 }
}

 

-----------------------------------------------------------------------------------

 

 

package Exercise5;

public class Exercise5_4 {

 public static void main(String[] args) {

  int[][] arr = {{5,5,5,5,5},{10,10,10,10,10},{20,20,20,20,20},{30,30,30,30,30}};
  
  int total = 0;
  float average = 0;
  
  for (int i = 0; i < arr.length; i++) {
   for (int j = 0; j < arr[i].length; j++) {
    total += arr[i][j];
   }
  }
  average =(float) total/(arr.length*5);
  System.out.println("total="+total);
  System.out.println("average="+average);
 }

}

 

---------------------------------------------------------------------------------

 

 

package Exercise5;

public class Exercise5_5 {

 public static void main(String[] args) {

  int[] ballArr = {1,2,3,4,5,6,7,8,9};
  int[] ball3 = new int[3];
  
  for (int x = 0; x < 20; x++) {    //20번 돌려준다.
   int i = (int)(Math.random() * ballArr.length);  //9개중에서 한개를 뽑는다.
   int j = (int)(Math.random() * ballArr.length);  //9개중에서 한개를 뽑는다.
   
   int temp = 0;    //  임시저장공간을 하나 만든다.
 
    temp = ballArr[i];
    ballArr[i] = ballArr[j];
    ballArr[j] = temp;           //치환한다.
  }
  System.arraycopy(ballArr, 0, ball3, 0, 3);   //치환된 값을 ball3 에 복사한다.
  
  for (int i = 0; i < ball3.length; i++) {
   System.out.print(ball3[i]);        //값을 출력한다.
  }
 }
}

 

--------------------------------------------------------------------------------------

 

 

package Exercise5;

public class Exercise5_6 {

 public static void main(String[] args) {

  //큰 금액의 동전을 우선적으로 거슬러 줘야한데..
  int[] coinUnit = {500,100,50,10};
  
  int money = 2680;
  System.out.println("money="+money);
  
  /*for (int i = 0; i < coinUnit.length; i++) {
   int n = money/coinUnit[i];
  }*/  //의미 없는 구문이었음.ㅋ;;
  
  for (int i = 0; i < coinUnit.length; i++) {
   
   System.out.println(coinUnit[i]+"원 : "+money/coinUnit[i]);
   
   money = money%coinUnit[i];     //money 값은 위에 계산된 값은 coinUnit[i] 값으로
  }                                          //계속 나눈 나머지 값이 된다. 이 구문은 두루두루 사용될것이다.!
 }

}

 

 

------------------------------------------------------------------------------------------------

 

package Exercise5;

public class Exercise5_8 {

 public static void main(String[] args) {

  int[] answer = {1,4,4,3,1,4,4,2,1,3,2};      //0~11      (크기가 12인 배열)     
  int[] counter = new int[4];                          //0,1,2,3  (크기가 4인 배열)
  
  for (int i = 0; i < answer.length; i++) {
   counter[answer[i]-1]++;     //안타깝게도 answer 배열은 0이 없다..그래서 counter 배열 0과 맞추어
  }                                       //줘야 하기때문에 answer 배열에서 1을 뺀그다~~ 방이 0,1,2,3 이렇게 있으니
  
  for (int i = 0; i < counter.length; i++) {
   System.out.print(counter[i]);
   
   for (int j = 0; j < counter[i]; j++) {
    System.out.print("*");            //바로 위에 연결하여 counter[i] 값을 구한만큼 별을 찍어라!
   }
   System.out.println();   //썅~! 줄바꿈도 중요하군..ㅋㅋ
  }
 }
}

 

---------------------------------------------------------------------------------------------------

 

 

package Exercise5;

public class Exercise5_9 {

 public static void main(String[] args)
 {

  char[][] star = {{'*','*',' ',' ',' '},{'*','*',' ',' ',' '},{'*','*','*','*','*'},{'*','*','*','*','*'}};
  char[][] result = new char[star[0].length][star.length];
                                                // 5?                  //4?
  
  for (int i = 0; i < star.length; i++)     //4행
  {
   for (int j = 0; j < star[i].length; j++)   //5열
   {   
    System.out.print(star[i][j]);
   }
   System.out.println();
   }
  
  System.out.println();
  
  for (int i = 0; i < star.length; i++)      //4행
  {
   for (int j = 0; j < star[i].length; j++)    //5열
   {
    int a = j;                               // a 는 5열
    int b = star.length-1-i;           // b 는 4행       4-1-0=3    /   4-1-1=2  /  4-1-2=1  /  4-1-3=0  /   
    
    result[a][b] = star[i][j];        //result[5][4] = star[4][5]
   }
  }
  
  for (int i = 0;  i< result.length; i++) {
   for (int j = 0; j < result[i].length; j++) {
    System.out.print(result[i][j]);
   }
   System.out.println();
  }
 }
}

//책의 답안대로 하면...숫자를 쓰면서....음.. 책의 원리도 나쁜건 아니얌~! 이문제는 생각하기 나름이다.ㅋ

 

 

----------------------------------------------------------------------------------------------------

 

 

package Exercise5;

public class Exercise5_10 {

 public static void main(String[] args)
 {

  char[] abcCode = {'`','~','!','@','#','$','%','^','&','*','(',')','-','_','+','=','|','[',']','{','}',';',':',',','.','/'};
  char[] numCode = {'q','w','e','r','t','y','u','i','o','p'};
  
  String src = "abc123";
  String result = "";
  
  for (int i = 0; i < src.length(); i++) {
   char ch = src.charAt(i);
   
  }
  
  System.out.println("src : "+src);
  
  char[] abc = new char[3];
  System.arraycopy(abcCode, 0, abc, 0, 3);
  //System.out.print(new String(abc));
  
  char[] num = new char[3];
  System.arraycopy(numCode, 1, num, 0, 3);
  //System.out.print(new String(num));
  
  result = new String(abc) + new String(num);
  System.out.println("result : "+result);
 }
}


// 책이랑 쫌 다르게 풀어봤엉~~ 답만 나오면 된다고 했으니깐..배운대로 복사를 이용해서 풀었습니다.

 

------------------------------------------------------------------------------------------------

 

 

package Exercise5;

public class Exercise5_11 {

 public static void main(String[] args) {

  int[][] score = {{100,100,100},{20,20,20},{30,30,30},{40,40,40},{50,50,50}};    //5행  3열
  int[][] result = new int[score.length+1][score[0].length+1];
                                            //6행                    //4열
  
  for (int i = 0; i < score.length; i++) {     //0 ~ 4 까지
   
   
   for (int j = 0; j < score[i].length; j++)     // 0 ~ 2 까지
   { 
    //System.out.print(score[i][j]);
    result[i][j] = score[i][j];   //복사~
    
    //문제는 지금부터얌..
    result[i][score[j].length] = result[i][score[j].length] + result[i][j];  //가로 세로 합
    //여기서 i 값은 괄호를 나가면 계속 '0'   score[j].length 는 0 ~ 2까지 네용!
    
    result[score[i].length+2][j] = result[score[i].length+2][j] + result[i][j];
    //이번에는 행 값이 증가하고 열값은 계속 고정이어야 하는건데...나..원참..
    
    result[score[i].length+2][score[j].length] = result[score[i].length+2][score[j].length] + result[i][j];
    //얼떨결에 풀었는데..이해가 잘 안간다..ㅋㅋ 내일도 다시 봐야겠어~ㅠ_ㅠ
   }
   
   
   
  }
  
  for (int i = 0; i < result.length; i++) {
   for (int j = 0; j < result[i].length; j++) {
    System.out.printf("%4d",result[i][j]);
   }
   System.out.println();
  }
 }

}

 

~~아오 드럽게 빡세네..그래도 문제푸는게 재미는 있네..드럽게 안풀려서 그러지..ㅠ_ㅠ

 

 

Posted by 옆모습오빠
:

// 배열이란 ?  많은 양의 데이터를 손쉽게 저장하기 위한 방법

package JavaTest;

public class ArrayEx1 {

 public static void main(String[] args) {

  int sum = 0;
  float average = 0f;
  
  int[] score = {100,90,80,70,60};    //1차원 배열 5개 선언
  
  for(int i=0;i<score.length;i++){
   sum = sum+score[i];                    //sum 을 누적
  }
  
  average = (float)sum/score.length;     //평균은 배열 길이로 나눈값
  
  System.out.println("합계:"+sum);
  System.out.println("평균:"+average);
 }
}

 

---------------------------------------------------------------------------

 

//간단한 배열값 비교

package JavaTest;

public class ArrayEx2 {

 public static void main(String[] args) {

  int[] score = {79,88,91,33,100,55,65};     //1차원 배열 7개 선언
  
  int max = score[0];                 //score[0] 을 최대값으로 선언
  int min = score[0];                  //score[0] 을 최소값으로 선언
  
  for(int i=1;i<score.length;i++){
   if(score[i]>max){                 //score[1]~[6]까지 score[0] 과 비교하여 크다면
    max=score[i];                  // 그 값이 최대값으로 한다.
   }
   if(score[i]<min){                 //score[1]~[6]까지 score[0] 과 비교하여 작다면
    min=score[i];                    // 그 값이 최소값으로 한다.
   }
  }
  
  System.out.println("최대값:"+max);
  System.out.println("최소값:"+min);
 }
}


-----------------------------------------------------------------------------------

 

// random() 메서드 활용 해보기

package JavaTest;

public class ArrayEx3 {

 public static void main(String[] args) {

  int[] number = new int[10];
  
  for(int i=0;i<number.length;i++){
   number[i] = i;                                // 0~9까지의 숫자를 number[0]~[9] 까지 초기화한다.
   System.out.print(number[i]);   
  }
  System.out.println();
  
  for(int i=0;i<100;i++){             //100번 충분히 돌린다.
   int n = (int)(Math.random()*10);    // 10개중(0~9까지 숫자중) 1개를 뽑는다.
   
   int temp = number[0];     //number[0] 값을 temp에 넣는다.
   number[0] = number[n];  //number[n] 값을 number[0]에 넣는다.
   number[n] = temp;          //temp 값을 number[n] 에 넣는다.
                                           //위에 3문장은 숫자를 섞을때 자주 사용되는 문장이다. 초기값을 선언을 해주어도 좋다.
  }
  
  for (int i = 0; i < number.length; i++) {
   System.out.print(number[i]);              //위에 섞은 값을 number[0] 부터 순서대로 출력하자!
  }
 }
}

 

-----------------------------------------------------------------------------------------------

 

 

//로또 추첨기 (중복은 허용)..

package JavaTest;

public class ArrayEx4 {

 public static void main(String[] args) {

  int[] ball = new int[45];             //45개의 배열을 선언한다.
  
  for(int i=0;i<ball.length;i++){       //배열의 각 요소에 1부터 45까지 저장한다.
   ball[i] = i+1;                           // <--배열은 0부터기때문에 왼쪽 식을 지정하여 ball[0]에 1을 저장하는..
  }                                                  //로또는 0이 없기 때문에~
  
  int temp = 0;              //두값을 바꿀때 쓸 임시 temp 변수
  int j = 0;                    //임의의 값을 저장할 변수
  
  for(int i=0;i<100;i++){                 //100번 썩이도록 ~~
   j = (int)(Math.random() * 45);       //배열범위 0~44 의 임의의 값을 얻는다
   
   temp = ball[0];         //첫번째 배열 ball[0] 을 temp에 넣는다.
   ball[0] = ball[j];       //랜덤으로 얻어진 ball[j]값을 첫번째 배열 ball[0] 에 넣는다. 
   ball[j] = temp;         //temp 값을 ball[j] 에 넣는다.
                                  //위 세가지는 섞어주기 위한!!! 필수!!
  }
  
  for(int i=0;i<6;i++){                 
   System.out.print(ball[i]+"/ ");      //배열 6개를 출력하랏!
  }
 }

}

---------------------------------------------------------------------------------------------------------

 

 

//버블 정렬 알고리즘

package JavaTest;

public class ArrayEx5 {

 public static void main(String[] args) {

  int[] number = new int[10];   //크기가 10인 배열
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i] = (int)(Math.random()*10));
  }  //우선 임의적으로 0~9까지 배열을 랜덤하게 뽑아낸다. 중복도 상관은 없엉! 우선 그렇게 해놓았네
  //nuber[0]~[9]까지 배열 값에 랜덤 숫자를 각각 담는다. 
  
  
  
  System.out.println();
  
  for(int i=0;i<number.length;i++){
   boolean changed = false;        //자리 바꿈이 발생했는지 체크!
   
   for(int j=0;j<number.length-1-i;j++){
    if(number[j]>number[j+1]){     //왼쪽값이 크면 ~ 예) number[0] > number[1] (각 배열에는 랜덤숫자가 들어가있음)
     int tmp = number[j];                  //바꿔라~
     number[j] = number[j+1];
     number[j+1] = tmp;
     changed = true;                        //바뀌었다면 true 로~
    }
   }
   
   if(!changed) break;               //자리 바꿈이 없다면 반복문을 벗어난다.
   
   for(int k=0;k<number.length;k++)
    System.out.print(number[k]);
       System.out.println(); 
  }
 }

}

 

----------------------------------------------------------------------------------------------------------------------

 

//P.123 [랜덤을 통해 뽑아낸 숫자를 하나씩 세어보기]

package JavaTest;

public class ArrayEx6 {

 public static void main(String[] args) {

  int[] number = new int[10];            //1차원 배열 10개를 number 에 담는다.
  int[] counter = new int[10];            // 1차원 배열 10개를 counter 에 담는다.
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i] = (int)(Math.random()*10));     //랜덤하게 뽑은 수를 number[i] 배열에 각각 담는다.
  }
  System.out.println();
  
  for(int i=0;i<number.length;i++){
   counter[number[i]]++;                          //number[i] 의 개수를 하나씩 세어라~! 헐~
  }
  
  for(int i=0;i<number.length;i++){
   System.out.println(i+"의 개수:"+counter[i]); 
  }
  
 }

}

 

------------------------------------------------------------------------------------------------------------

 

 

//P.124 charAt(int idx) : 괄호안에 인덱스 안에 있는 문자열을 반환하는 메서드!
//**charAt 은 char 형은 사용 못하고 String 문자열에서만 사용할 수 있다.!!!!

package JavaTest;

public class ArrayEx8 {

 public static void main(String[] args) {

  String src = "ABCDE";
  //char[] src = {'A','B','C','D','E'};    사용못함 X
  
  for(int i=0;i<src.length();i++){
   System.out.println("src.charAt("+i+"):"+src.charAt(i));
  }
 }
}

------------------------------------------------------------------------------------------------------------

 

//P.128 다차원 배열 (열과 행)으로 구분을 짓는다.

package JavaTest;

public class ArrayEx10 {

 public static void main(String[] args) {

  int[][] score = { {100,100,100}, {20,20,20}, {30,30,30}, {40,40,40}, {50,50,50} };
  
  int koreaTotal = 0;
  int englishTotal = 0;
  int mathTotal = 0;
  
  System.out.println("번호  국어  영어  수학  총점  평균");
  System.out.println("==================");
  
  for(int i=0;i<score.length;i++){
   int sum = 0;
   koreaTotal = koreaTotal+score[i][0];
   englishTotal = englishTotal+score[i][1];
   mathTotal = mathTotal+score[i][2];
   System.out.print(" "+(i+1)+" ");
   
   for(int j=0;j<score[i].length;j++){
    sum = sum+score[i][j];
    System.out.print(score[i][j]+" ");
   }
   System.out.println(sum+" "+sum/(float)score[i].length);
  }
  
 }

}

 

-------------------------------------------------------------------------------------------------------

 

//P.130 배열의 복사

package JavaTest;

public class ArrayEx11 {

 public static void main(String[] args) {

  int[] number = {1,2,3,4,5};        //①
  int[] newNumber = new int[10];  //②
  
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i]);   //①
   newNumber[i] = number[i];     //①number 배열 하나씩 newNumber 에 담는다. 5개 담아지겠다.
  }
  System.out.println();
  
  for(int i=0;i<newNumber.length;i++){
   System.out.print(newNumber[i]);   //② 기존에 담았던 5개 그러니깐 이전 for 문을 복사함
  }                                                       //나머지 5~9 까지 공간에는 '0'으로 초기화해서 담김
 }

}

 

----------------------------------------------------------------------------------------------------------

 

//P.132 ( System 클래스의 arraycopy() ) 복사

package JavaTest;

public class ArrayEx12 {

 public static void main(String[] args) {

  char[] abc = {'A','B','C','D'};
  char[] number = {'0','1','2','3','4','5','6','7','8','9'};
  System.out.println(new String(abc));
  System.out.println(new String(number));
  
  char[] result = new char[abc.length+number.length];               
  //길이 14인 배열 result (result 는 char 형이기 때문에 1,2,3... 형식이 아닌 공백으로 14자리를 만든다.)
  System.arraycopy(abc,0,number,0,abc.length);                               
  // abc[0] 시작해서 number[0] 부터 복사하는데, 길이는(abc.length)=4만큼만 복사해라  --> ABCD456789 
  System.arraycopy(number, 0, result, abc.length, number.length);     
  // 위에 내용을 이어서 number[0] 시작해서 result[4] 부터 복사하는데...
  // 길이는 (number.length)=10만큼만 복사해라 --> ABCD456789  -->'     'ABCD456789
  System.out.println(new String(result));  //--> ABCD0123456789
  
  System.arraycopy(abc,0,number,0,abc.length);
  //abc[0] 시작해서 number[0] 부터 복사하는데 총 길이 4만큼만 복사해라
  //--> ABCD456789
  System.out.println(new String(number));
  
  System.arraycopy(abc, 0, number, 6, 3);
  //abc[0] 시작해서 number[6] 부터 복사하는데 총길이가 3만큼만 복사해라
  //--> ABCD456789   --> ABCD45ABC9
  System.out.println(new String(number));
 }

}

 

-------------------------------------------------------------------------------------------------------------

 

 

 

Posted by 옆모습오빠
: