연습문제_배열

2023. 2. 15. 18:47자료구조/선형자료구조

< 언제 사용? > - 데이터 개수가 고정적이고 같은 종류의 데이터 저장. 순서 존재. 값 추가/삭제 번거로움.


1번.

문제: 배열 arr의 모든 데이터에 대해서, 짝수 데이터들의 평균과 홀수 데이터들의 평균 출력

예시)
배열 arr: 1,2,3,4,5,6,7,8,9
결과              =>  짝수 평균: 5.0
                     홀수 평균: 5.0

public class quiz1 {
    public static void main(String[] args) {
        int[] arr ={1,2,3,4,5,6,7,8,9};
        float sumEven = 0;
        float sumOdd = 0;
        int numEven = 0;
        int numOdd = 0;

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 == 0) {
                numEven++;
                sumEven += arr[i];
            } else {
                numOdd++;
                sumOdd += arr[i];
            }
        }

        System.out.println("짝수 평균: " + sumEven/numEven);
        System.out.println("홀수 평균: " + sumOdd/numOdd);
    }
}

2번.

/*
    배열 arr에서 target에 해당하는 값의 인덱스를 출력
    해당 값이 여러 개인 경우 가장 큰 인덱스 출력

    예시)
    배열 arr: 1,1,100,1,1,1,100
    target: 100
    결과: 6
*/

 

public class quiz2 {
    public static void main(String[] args) {
        int[] arr = {1,1,100,1,1,1,100};
        int index = -1;
        int target = 100;

        for (int i = 0; i < arr.length; i++) {
            if (target <= arr[i]) {
                target = arr[i];
                index = i;
            }
        }

        if (index != -1) {
            System.out.println(index);
        }
    }
}

3번.

문제) 배열 arr의 데이터 순서를 거꾸로 변경하기
(추가 배열을 사용하지 않음)

예시)
arr: 1,3,5,7,9
결과: 9,7,5,3,1

import java.util.Arrays;

public class quiz3 {
    public static void main(String[] args) {
        int[] arr = {1,3,5,7,9};
        for (int i = 0; i < arr.length / 2; i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length - (i + 1)];
            arr[arr.length - (i + 1)] = temp;
        }
        System.out.println(Arrays.toString(arr));
    }
}

4번.

문제) 배열 arr에서 peek 값 모두 출력

예시)
arr: 3,1,2,6,2,2,5,1,9,10,1,11
결과: 3,6,5,10,11

public class quiz4 {
    public static void main(String[] args) {
        int[] arr = {3,1,2,6,2,2,5,1,9,10,1,11};

        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                System.out.print(arr[i] + ", ");
            }
            if (i == arr.length - 2 && arr[i] < arr[i + 1]) {
                System.out.print(arr[i + 1]);
            }
        }
        System.out.println();
    }
}

5번.

문제) 배열 arr의 값을 오름차순을 출력


예시)
arr: 5,3,1,4,6,1
결과: 1,1,3,4,5,6

public class quiz5 {
    public static void main(String[] args) {
        int[] arr = {5,3,1,4,6,1};
        int[] visited = new int[arr.length];
        int visitCnt = 0;
        int minVal = Integer.MAX_VALUE;
        int minIdx = -1;
        
        while(visitCnt < arr.length) {
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] < minVal && visited[i] == 0) {
                    minVal = arr[i];
                    minIdx = i;
                }
            }

            if (minIdx != -1) {
                System.out.print(minVal + " ");
                visited[minIdx] = 1;
                visitCnt++;
            }

            minIdx = -1;
            minVal = Integer.MAX_VALUE;
        }
        System.out.println();
    }
}

6번.

문제) 배열의 중복값 제거


예시)
arr: 1,5,3,2,2,3,1,4,1,2,3,5
결과: 1,5,3,2,4

public class quiz6 {
    public static void main(String[] args) {
        int[] arr = {1,5,3,2,2,3,1,4,1,2,3,5};
        int[] result = new int[arr.length];
        int index = 0;

        for (int i = 0; i < arr.length; i++) {
            boolean exist = false;
            for (int j = 0; j < index; j++) {
                if (arr[i] == result[j]) {
                    exist = true;
                    break;
                }
            }
            if (!exist) {
                result[index++] = arr[i];
            }
        }

        for (int i = 0; i < index; i++) {
            System.out.print(result[i] + " ");
        }
        System.out.println();
    }
}

7번.

문제) 2차원 배열을 시계방향 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

public class quiz7 {
    static void printArr(int[][] result) {
        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();
        }
    }

    public static void main(String[] args) {
        int[][] arr = {{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}};
        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[i].length - arr.length - i] = arr[i][j];
            }
        }

        printArr(result);
    }
}

 

'자료구조 > 선형자료구조' 카테고리의 다른 글

연습문제_해시맵  (0) 2023.02.18
해시테이블  (0) 2023.02.18
배열  (0) 2023.02.15
연습문제_큐  (0) 2023.02.15
연습문제_스택  (0) 2023.02.15