배열 arr의 모든 데이터에 대해서, 짝수데이터들의 평균과 홀수 데이터들의 평균을 출력하세요.
배열 arr : 1, 2, 3, 4, 5, 6, 7, 8, 9
결과
짝수평균: 5.0
홀수평균: 5.0
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
double sumEven = 0;
double sumOdd = 0;
int cntEven = 0;
int cntOdd = 0;
for(int item : arr){
if(item % 2 ==0){
sumEven += item;
cntEven++;
} else{
sumOdd += item;
cntOdd++;
}
}
System.out.println("짝수평균"+ sumEven / cntEven);
System.out.println("홀수평균"+ sumOdd / cntOdd);
배열 arr에서 target에 해당하는 값의 인덱스를 출력
해당값이 여러개인 경우 가장 큰 인덱스 출력
배열 arr : 1, 1, 100, 1, 1, 1, 100
target: 100
결과: 6
int target = 100;
int[] arr = {1, 1, 100, 1, 1, 1, 100};
for(int i = 0; i<arr.length; i--){
if(arr[arr.length-1-i] == target){
System.out.printf("결과: %d\n", arr.length-1-i);
break;
} else{
System.out.println("값이 없습니다.");
}
}
배열 arr의 데이터순서를 거꾸로 변경하세요.
단, 추가배열을 사용하지 않는다.
arr: 1, 3, 5, 7, 9
결과: 9, 7, 5, 3, 1
int[] arr = {1, 3, 5, 7, 9};
for (int i =0; i <= arr.length / 2; i++) {
int tmp = arr[i];
arr[i] = arr[arr.length -1 -i];
arr[arr.length -1 -i] = tmp;
}
System.out.println(Arrays.toString(arr));
배열 arr에서 peek값 모두 출력
peek값이란 좌우보다 큰값을 의미하며, 배열의 처음과 끝은 각각 오른쪽, 왼쪽값만 비교한다.
arr: 3, 1, 2, 6, 2, 2, 5, 1, 9, 10, 1, 11
결과: 3, 6, 5, 10, 11
int[] arr = {3, 1, 2, 6, 2, 2, 5, 1, 9, 10, 1, 11};
for (int i= 0; i<arr.length; i++){
if (i == 0 && arr[i+1]<arr[i]){
System.out.print(arr[i]+" ");
} else if (i == arr.length-1 && arr[i-1]<arr[i]){
System.out.print(arr[i]+" ");
} else {
if(arr[i-1] < arr[i] && arr[i+1] < arr[i]) {
System.out.print(arr[i]+" ");
}
}
}
배열 arr값을 오름차순으로 출력
arr: 5, 3, 1, 4, 6, 1
결과: 1, 1, 3, 4, 5, 6
int[] arr= {5, 3, 1, 4, 6, 1};
for(int j = 0; j< arr.length; j++) {
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
}
System.out.println(Arrays.toString(arr));
이러면 이라 개선이 필요해 보인다.
배열 arr 에서 중복 값을 제거한 새 배열을 만드시오.
arr: 1, 5, 3, 2, 2, 3, 1, 4, 1, 2, 3, 5
결과: 1, 5, 3, 2, 4
int[] arr= {1, 5, 3, 2, 2, 3, 1, 4, 1, 2, 3, 5};
int[] result = new int[arr.length];
int cnt =0;
for(int i=0; i<arr.length; i++){
boolean dupFlag = false;
for(int j = 0; j<cnt; j++){
if(arr[i] == result[j]){
dupFlag =true;
}
}
if(dupFlag == false){
result[cnt++] = arr[i];
}
}
for(int i=0; i<cnt; i++){
System.out.print(result[i]+" ");
}
Set을 이용하면 쉽게 구현할수 있지만, 순수 배열을 통해 구현하였다.
2차원 배열 arr 을 시계방향 90도 회전시킨 결과를 출력하세요.
arr:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
결과:
11 6 1
12 7 2
13 8 3
14 9 4
15 10 5
int[][] arr = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10},{11, 12, 13, 14, 15}};
System.out.println("arr.length:" +arr.length);
System.out.println("arr[0].length:" +arr[0].length);
int[][] result = new int[arr[0].length][arr.length];
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
result[j][arr.length-1-i] = arr[i][j];
}
}
for (int i=0; i<result.length; i++){
for(int j =0; j<result[i].length; j++){
System.out.printf("%2d ",result[i][j]);
}
System.out.println();
}