자료구조 : 프로그램 개발 시 특정한 문제나 목표를 해결하기 위해 여러가지 요소를 모아 조직화된 데이터를 이루는 것. 자료구조를 통해 효율적으로 데이터를 저장하고 데이터 간 관계를 정의할 수 있으며 데이터의 접근, 수정, 삭제 등의 관리를 할 수 있다. 또한 코드의 양을 줄일 수 있다.
자료구조 - 선형구조 : 데이터를 일렬로 나열. 인접한 요소들 간에 하나의 요소만 존재.
자료구조 - 비선형구조 : 데이터를 계층 구조화 한 형태. 인접한 요소들 간에 다수의 요소가 존재.
알고리즘 : 문제를 해결하기 위한 일련의 과정 및 논리적인 절차.
ex. 최솟값 찾기 : 정수형 변수 다섯 개를 서로 다른 숫자로 초기화 하고(int num1....num5) int mini는 int mini=int num1로 초기화한다. 그리고 조건문을 통해 min과 각각의 변수 크기를 비교하여 min보다 작을 경우 min에다가 그 변수값을 재할당한다.
int num1 = 2; int num2 = 7; int num3 = 4; int num 4=3; int num5=5; int mini = num1; if(num2 < mini) mini = data2; if(num3 < mini) mini = data3; if(num4 < mini) mini = data4; if(num5 < mini) mini = data5; System.out.println("최솟값 : " + mini); ...... 출력 : 2
ex. 위의 내용을 함수로 만들어서 써도 된다 (ex. 비교할 숫자들을 파라미터로 입력하는 함수)
배열 : 데이터 타입이 같은 여러 개의 변수를 한 곳에 모아둔 것. 배열은 스택, 큐, 트리와 같은 알고리즘과 깊은 연관을 가진다.
배열 자료의 기본값(default value) : byte, int, short(0), float(0.0), long(0L), double(0.0), char('\u0000\, but 출력 안 됨), boolean(false, bool은 0이 아니면 전부 1로 취급)
배열의 초기화 : 1) 배열 선언과 동시에 0으로 초기화 : int [] arr1 = new int [1]; ... [0] 2) 배열 생성 시 크기는 지정 안 하고 저장할 요소만 명시 : int [] arr2 = new int[] {0, 1, 2,}; 3) 저장할 요소만 명시 : int [] arr 3 = {0, 1, 2, 3, 4};
foreach 반복문 (향상된 for문) : ex. int [] stu = new int [10]; for(int i = 0; i < stu.length; i++) { stu[i] = (i + 1001); } for(int stuNum : stu) { System.out.println("학생번호 (최초 오름차순) : " + stuNum); }
(* 단 인덱스로 접근 필요 할 때는 foreach 사용 못 함)
배열 통한 오름차순 / 내림차순 : int [] stu = new int [10]; for(int i = 0; i < stu.length; i++) { stu[i] = (i + 1001); }
int [] stu2 = new int[stu.length]; for(int i = 0; i < stu.length; i++) { stu2[ ( stu.length - 1) - i ] = stu[ i ]; }
50개의 랜덤한 수를 가진 배열에서 최소/최대값 구하기 : (java.util.Random 클래스를 이용해 난수를 구한다)
배열 이용해 소수 구하기 :
배열 복사 :
[1] 얕은 복사 - 그냥 바로 배열에 원본을 대입한다. 서로 연결된 아바타를 만드는 것과 같다.
[2] 깊은 복사 - 원본과 같은 크기를 가진 배열을 일단 먼저 생성한 후 반복문을 통해 값을 넣어준다. 나와 똑같이 생겼지만 다른 클론을 만드는 것과 같다.
<깊은 복사 참고 메서드> : clone(), System.arraycopy(Object src, int srcPos, Object dest, int destPost, int length), Arrays.copyOf(..), Arrays.copyRange(..) [2-1] 메서드 이용 배열 복사 -
다차원 배열:
[0] - int [][] arr = new int [2][1];
[1] 2차원 배열 초기화 -
[2] 다차원 배열로 매출 총합과 상품 수익 구하기 - // 첫번째 i for문 : 일주일 치 수익 계산 // 두번째 k for문 : 하루 치의 수익 계산.