스터디/JAVA

섹션9. 배열

nnhhmm 2024. 11. 6. 19:24

초급

문제1. 배열이란 무엇이며, 배열을 사용할 때 얻을 수 있는 이점은 무엇인가요? 간단하게 설명하세요.

배열은 같은 타입의 데이터를 순차적으로 저장하는 자료구조이다. 배열의 각 요소는 고유한 인덱스를 가지며, 이 인덱스를 통해 빠르게 데이터에 접근할 수 있다. 

문제2. 정수(int) 배열을 생성하고, 첫 번째 요소에 10을 할당한 후 배열의 길이를 출력하는 코드를 작성하세요. 

public class ArrayEx {
    public static void main(String[] args) {
        int[] numbers = new int[5];

        numbers[0] = 10;

        System.out.println("배열의 길이 : " + numbers.length);
    }
}

문제3. 주어진 int 배열 {2, 4, 6, 8, 10}의 모든 요소를 출력하는 코드를 작성하세요. (향상된 for문을 사용하세요.)

public class EnhancedForEx {
    public static void main(String[] args) {
        int[] numbers = {2,4,6,8,10};

        for(int number : numbers){
            System.out.println(number);
        }
    }
}

중급

문제1. 길이가 5인 double 배열을 선언하고, for문을 사용하여 배열의 각 요소에 해당 인덱스의 제곱 값을 할당하는 코드를 작성하세요. 예를 들어, 배열의 첫 번째 요소는 0^2이 되어야 합니다.

public class ArrayEx2 {
    public static void main(String[] args) {
        double[] numbers = new double[5];

        for(int i = 0; i<numbers.length; i++){
            numbers[i]=i*i;
            System.out.println(numbers[i]);
        }
    }
}

문제2. 배열의 크기는 한 번 정해지면 변경할 수 없습니다. 이 문제를 해결하기 위한 대안으로 어떤 방법이 있는지 설명하세요.

다른 자료구조를 사용한다. 예를들어 동적으로 크기를 추가할수있는 ArrayList 형식을 사용한다.

문제3. 주어진 String 배열 {"apple", "banana", "cherry"}의 요소들을 역순으로 출력하는 코드를 작성하세요.

public class ArrayEx3 {
    public static void main(String[] args) {
        String[] fruits = {"apple","banana","cherry"};

        for(int i = fruits.length-1; i>=0; i--){
            System.out.println(fruits[i]);
        }
    }
}

고급

문제1. 2차원 int 배열을 생성하고, 각 행과 열의 합을 계산하여 배열의 모든 요소와 각 행과 열의 합을 출력하는 코드를 작성하세요.

public class ArrayEx4 {
    public static void main(String[] args) {
       int[][] numbers = new int[3][3];

       int number =1;
       for(int row = 0; row<3; row++){
           for(int col = 0; col<3; col++){
               numbers[row][col]=number++;
               System.out.print(numbers[row][col]+" ");
           }
           System.out.println();
       }

       for(int i =0; i<3; i++){
           int rowSum = 0;
           for (int j =0; j<3; j++){
               rowSum += numbers[i][j];
           }
           System.out.println((i+1)+"행의 합 : "+rowSum);
       }

       for(int j = 0; j<3; j++){
           int colSum =0;
           for (int i = 0; i<3; i++){
               colSum +=numbers[i][j];
           }
           System.out.println((j+1)+"열의 합 : "+colSum);
       }
    }
}

문제2. 배열을 리팩토링할 때 고려해야 할 사항에는 어떤 것이 있는지 설명하고, 배열을 보다 효율적으로 관리하기 위해 사용할 수 있는 컬렉션이나 자료구조에 대해 간단히 설명하세요.

  • 반복 처리: 배열은 반복문으로 처리하는 경우가 많기 때문에, 더 간단하고 가독성을 높일 수 있는 forEach문을 사용할 수 있는지 확인해야 한다.
  • 크기 조절: 배열은 크기가 고정되어 있으므로, 크기를 효율적으로 관리할 필요가 있다면 동적 크기를 지원하는 List 자료구조를 사용할 수 있다.
  • 데이터 관리 방식: 데이터를 키-값 쌍으로 저장하고 싶다면 Map을 사용하여 가독성을 높일 수 있다.

문제3. 사용자로부터 숫자 입력을 받아 그 숫자만큼의 길이를 가지는 배열을 생성한 후, 배열에 랜덤한 값을 채우고 배열의 평균을 출력하는 코드를 작성하세요. (Scanner와 Math.random()을 사용하세요.)

public class ArrayEx5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("배열의 길이를 입력하세요: ");
        int n = scanner.nextInt();

        int[] numbers = new int[n];

        int total = 0;
        for (int i = 0; i < n; i++) {
            numbers[i] = (int) (Math.random() * 100);
            System.out.println("인덱스 [" + i + "] 값 : " + numbers[i]);
            total += numbers[i];
        }

        double average = (double) total / n;
        System.out.println("평균값 : " + average);
    }
}

'스터디 > JAVA' 카테고리의 다른 글

자바입문 스터디 후기  (2) 2024.11.08
섹션10. 메서드  (1) 2024.11.07
섹션8. 훈련  (3) 2024.11.05
섹션7. 스코프, 형변환  (3) 2024.11.04
섹션6. 반복문  (4) 2024.11.03