1. 배열
1.1. 배열이란?
배열은 같은 자료형의 변수로 이루어진 구성 요소(component)가 모인 것.
1.1.1 배열의 선언법
int[] a; // 이 쪽을 더 선호함
int a[];
e.g.) 구성 요소의 자료형이 int형이고, 구성 요소의 개수가 5개인 배열
a = new int[5]
초기화 하지 않으면 0으로 초기화
1.1.2 배열 요소의 최댓값 구하기
max = a[0];
for(int i = 1; i<n; i++;){
if(a[i]> max) max = a[i];
}
1.1.3 배열 요소를 역순으로 정렬하기
한번 고민해보세요 :)
idx를 거꾸로 뒤집어도 될 것이고,
이분탐색 적으로 반으로 나누어서 각 요소를 치환해도 될 듯?
1.1.4 번외 -> 함수로 만들어 사용하는 방법
메서드를 쪼개서 사용하는 방법
1. 각 요소를 치환하는 메서드를 만든다.
2. 그 메서드를 n/2 까지 탐색한다
swap(int[] a , int idx1, int idx2){
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
}
reverse(int[] a){
for(int i = 0; i< a.length /2 ; i++){
swap(a, i, a.length - i - 1);
}
}
1.2. 다차원 배열
1.2.1 다차원 배열의 선언
int[][] a = new int[n][m];
1.3. 클래스 배열
제 개인적인 생각으론 C의 structure 느낌..?
1.3.1 클래스 배열을 왜?
클래스 배열을 사용하는 것은 보통 Node 에서 많이 사용함Dijkstra
or Floyd-Warshall
같은 곳에서 Node를 클래스로 주고
클래스의 Sort를 @Override 해서 정렬하는 식의 구현이 잦음
1.3.2 예시
- java 다익스트라
https://sskl660.tistory.com/59
2. 배열이 중요한 이유
2.1 다양한 활용성
배열은 진짜 다양하게 활용됨
일단 제가 생각나는 것만 해도
- 완전탐색
- 그래프에서 인접행렬로 BFS 구현
- DP
- 구간 합
- 정렬
- 구현
etc.,
자료구조에서는 일단 배열,리스트,큐 이 세개만 알아도 엔간한 알고리즘 다 풀 수 있음
왜냐? 엔간한 알고리즘의 구현체가 배열 리스트 큐로 이루어져 있기 때문임
그래서 배열과 리스트 큐에 대해 이해하면 아예 모르는 알고리즘이더라도 어느 정도 부분 점수는 가능 :)
REF