New World

[Zero-base #03] 배열 본문

Self-Study/Study

[Zero-base #03] 배열

hyeovi 2023. 3. 15. 23:54
728x90
반응형

배열

- 같은 데이터 타입의 변수들이 하나의 집합 형태로 이루어진 자료구조

- index와 element로 구성됨

- Arrays는 java에서 지원해주는 기본 클래스

 

1차원 배열

- 가장 기본적인 형태의 고정된 길이를 가진 배열

- 같은 데이터 타입의 변수들이 집합의 형태를 이루고 있음

- 데이터 타입은 기본 타입과 참조 타입 모두 볼 수 있음

 

1차원 배열 선언 => 선언 후 초기화해줄 것!

데이터형[] 배열이름 = new 데이터형[];

 

1차원 배열의 활용

- 요소의 길이를 정해줄 수 있어 for문 또는 while 문 같은 반복문으로 데이터를 다룰 수 있음

 

2차원 배열

- 배열의 요소로 1차원 배열을 가지는 배열

 

2차원 배열 선언

데이터형[][] 배열 이름 = new 데이터형[][];

 

가변 배열

- 2차원 배열 중 각 행다마 다른 길이를 가지는 배열

ex. int[][] array = new int[2][3];

//1차 배열
int N = 5; //배열의 크기
int[] array = new int[N];
int[] array = {1, 3, 5, 7, 9};

//2차 배열
int N = 2; //배열의 크기
int M = 2; //배열의 크기
int[][] array = new int[N][M]; //2차 배열
int[][] array = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 0}}, {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 0}};

//가변 배열
M = 3;
int[][] array = new int[N][M]; //2차 배열
int[][] array = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 0}}, {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 0}}, {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 0}};

Enhanced for문

- 배열에 데이터 값이 있어 모두 돌릴 때 사용

int[] array = {1, 3, 5, 7, 9};
for(int i : array){
   	for(int j : array){
    	....
    }
}

 

* 배열과 리스트의 차이

배열(Array, []) : 인덱스로 여러 개의 데이터를 하나의 이름으로 그룹핑하여 관리하기 위한 자료구조

리스트(List, <>()) : 인덱스 없이 데이터를 그룹핑하여 관리하기 위한 자료구조

 

인덱스의 유무에 따라 저장 방식과 크기 할당, 속도가 달라지게 된다.

 

저장 방식

- 배열 : 정해진 공간이 있고 모든 곳에 인덱스가 존재

- 리스트 : 인덱스가 없어 새로 추가되는 공간에 저장될 수 있다

 

크기 할당

- 배열 : 객체 생성 시 크기 할당 필수 => 인덱스가 존재하기 위함, 할당되어 사이즈 변경이 불가

- 리스트 : 크기 할당이 필요가 없다 => 인덱스가 존재하지 않음 (자동으로 공간이 생성됨)

 

속도

- 배열의 삽입/삭제 : 인덱스를 찾아가기 위해 느리게 동작한다

- 리스트의 삽입/삭제 : 인덱스를 찾아갈 필요가 없기 때문에 빠르게 동작한다

 

- 배열의 조회 : 인덱스를 통해 조회를 하며 원하는 값을 찾기 때문에 빠르게 동작한다

- 리스트의 조회 : 인덱스 없이 조회를 하기에 값을 하나씩 확인하여 느리게 동작한다

 

다차원

- 배열 : 1차, 2차 식의 N차 형식과 가변 배열이 존재

- 리스트 : 불가능하다

 

문제 풀이

최소, 최대 (https://www.acmicpc.net/submit/10818/57493395)

import java.util.*;

public class Main {
	public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int N = scn.nextInt();

        ArrayList list = new ArrayList();

		//배열에 숫자 삽입
        for(int i = 0; i < N; i++){
            list.add(scn.nextInt());
        }

        Collections.sort(list); //배열을 오름차순으로 정렬
        
        System.out.println(list.get(0) + " " + list.get(N - 1)); //최소, 최대 출력

    }
}

 

나누어 떨어지는 숫자 배열(https://school.programmers.co.kr/learn/courses/30/lessons/12910)

반응형
Comments