[자료구조] 2023_0821 배열

박희현·2023년 8월 21일
0

MSG STUDY

목록 보기
1/7

8/21 자료구조 스터디


[01] 배열(Array)

  • 배열의 목적과 이론
  • 배열의 특징
  • 접근, 검색, 추가, 삭제와 시간복잡도
  • 코드를 작성해서 활용문제 만들어보기
    • ex) 해당 코드의 출력결과는?

[ 배열의 목적과 이론 ]

배열이란?
같은 타입의 변수들이 연속적으로 저장되는 공간이다
배열은 메모리를 효율적으로 관리하기 위해 사용한다

[ 배열의 특징 ]

  • 배열은 데이터를 읽는 속도가 빠른 것에 비해 검색, 추가, 삭제할 때는 느려질 수 있다. 검색, 추가, 삭제를 위한 이동이 특정 위치에서 많기 때문이다.
  • 배열은 방의 갯수가 고정되어 있기 때문에 삭제할 때 메모리가 낭비되는 단점이 있다
  • 값을 추가할 때도 중간에 추가하고 싶다면 옆에 있는 값들이 모두 이동해야 하므로 할 일이 많다

[ 접근, 검색, 추가, 삭제와 시간복잡도 ]

접근, 검색, 추가, 삭제는 배열 내 연산이다.
1. 접근 : 배열의 n번째 인덱스에 해당하는 값을 찾는다
2. 검색 : 알고싶은 값의 인덱스를 알지 못할 때 사용한다
3. 추가 : 배열은 크기가 고정되어 있기 때문에 크기가 꽉 차있다면 값을
추가할 수 없다
만약 추가할 공간이 있는데 그 추가할 공간이
배열의 맨 끝이 아니면 추가할 공간 이후의 값들은 모두 뒤로 밀어야 하기 때문에 O(n)의 시간복잡도를 가진다
배열의 맨 뒤이고 공간이 있다면 O(1)의 시간복잡도를 가진다
4. 삭제 : 삭제도 추가와 마찬가지로 삭제하려는 값의 인덱스가 맨 마지막이 아니라면 O(n)의 시간복잡도를 가진다
그리고 삭제할 인덱스가 배열의 맨 뒤이고 공간이 있다면 O(1)의 시간복잡도를 가진다
시간복잡도라는 것은 얼마나 빠르게 결과를 출력할 수 있는지로 수치가 작을수록 효율적인 알고리즘이라 할 수 있다

[ 코드를 작성해서 활용문제 만들어보기 ]

import java.util.Scanner;
public class Array01{
	public static void main(String[] args){
    	Scanner scan = new Scanner(System.in);
    	//1.
    	System.out.println("인덱스 몇 번에 숫자를 넣고싶나요? ");
        int index=scan.nextInt();
        System.out.println("무슨 숫자를 넣고싶나요? ");
        int num=scan.nextInt();
    	int[] a = new int[10];
    	a[index]=num;
    	System.out.println(a[?]);
    	//2.
    	int[] a= {3,4,2,6,2,4,4};
    	a[3]=5;
    	System.out.println("a[3]에 들어있는 값은?");
    	//3.
    	char[] b= {'A', 'c', 'D'};
    	System.out.println(b[4]);
	}
}
  1. ?에 어떤 값이 들어가야 num의 값이 나올까요?
  2. 출력결과가 무엇인가요?
  3. 출력결과가 무엇인가요?
profile
희현's velog

0개의 댓글