728x90
Do it! 자료구조와 함께 배우는 알고리즘 입문 읽고 정리
2-1 배열
자료구조
- 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계
- 데이터 단위는 데이터를 구성하는 한 덩어리
- 자료구조는 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법을 뜻함
배열
배열 요소의 최댓값 구하기
class MaxofArray {
static int maxOf(int[] a) {
int max = a[0];
for (int i = 1; i < a.length; i++) {
if (a[i] > max) {
max = a[i];
}
}
return max;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9}
int max = maxOf();
}
}
난수 사용해 배열의 요솟값 설정하기
class MaxOfArrayRand {
public static void main(String[] args) {
Random rand = new Random();
int[] array = new int[5];
for (int i = 0; i < array.length; i++) {
array[i] = 100 + rand.nextInt(90);
}
System.out.println("최대값은 " +maxOf(array));
}
static int maxOf(int[] a) {
int max = a[0];
for (int i = 1; i < a.length; i++) {
max = a[i];
}
return max;
}
}
- 연습문제
Q1 키뿐만 아니라 사람 수도 난수로 생성하는 프로그램 작성
class MaxOfArrayRand {
public static void main(String[] args) {
Random rand = new Random();
int[] array = new int[rand.nextInt(20) + 1];
for (int i = 0; i < array.length; i++) {
array[i] = 100 + rand.nextInt(90);
}
System.out.println("최대값은 " +maxOf(array));
}
static int maxOf(int[] a) {
int max = a[0];
for (int i = 1; i < a.length; i++) {
max = a[i];
}
return max;
}
}
배열 요소를 역순으로 정렬하기
static void swap(int[]a, int idx1, int idx2) {
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
}
static void reverse(int[] a) {
for (int i = 0; i < a.length; i++) {
swap(a, i, a.length-i-1);
}
}
public static void main(String[] args) {
int[] x = {12, 13, 14, 15, 16};
reverse(x);
}
- 연습문제
Q2 배열 요소를 역순으로 정렬하는 과정을 하나하나 나타내는 프로그램 작성
static void swap(int[] a, int idx1, int idx2) {
int t = a[idx1];
a[idx1] = a[idx2];
a[idx2] = t;
}
static void reverse(int[] a) {
System.out.println(a);
for (int i = 0; i < a.length; i++) {
swap(a, i, a.length-i-1);
System.out.println(a[idx1] + "과(와) " + a[idx2] + "를 교환합니다.");
}
}
public static void main(String[] args) {
int[] x = {5, 10, 73, 2, -5, 42};
reverse(x);
}
두 배열의 비교
static boolean equals(int[] a, int[] b) {
if (a.length != b.length) return false;
for (int i=0; i < a.length; i++) {
if (a[i] != b[i]) return false;
}
return true;
}
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {1, 2, 3, 4, 6};
System.out.println(equals(a, b));
}
- 연습문제
Q4 배열 b의 모든 요소를 배열 a에 복사하는 메소드 작성
static void copy(int[] a, int[] b) {
a = b;
for (int i=0; i<a.length; i++) {
System.out.println(a[i]);
System.out.println(b[i]);
}
}
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {1, 2, 3, 4, 6};
copy(a, b);
}
다차원 배열
- Java는 2차원 배열을 '배열의 배열'로 생각하고, 3차원 배열을 '배열의 배열의 배열로 생각함.
2-2 클래스
- 클래스는 임의의 데이터형을 자유롭게 조합하여 만들 수 있는 자료구조
클래스의 보충 설명
- 클래스 본체와 멤버
1. 클레스 본체에서는 멤버, 클래스 초기화/인스턴스 초기화, 생성자를 선언할 수 있다.
2. 필드/메소드/생성자를 선언할 때 public/private/protected를 지정할 수 있다.
3. 메소드/생성자는 다중으로 정의할 수 있다.(오버로드)
4. final로 선언한 필드는 변경할 수 없다.
5. 생성자는 새로 생성한 인스턴스의 초기화를 위해 사용된다.
728x90
'개발 > Java & Kotlin' 카테고리의 다른 글
[Java] 스택과 큐 (0) | 2022.07.10 |
---|---|
[Java] 검색 (0) | 2022.07.10 |
[Java] 기본 알고리즘 (0) | 2022.07.07 |
[Spring] 스프링 시큐리티 (2) (0) | 2022.07.05 |
[Spring] 스프링 시큐리티 (1) (0) | 2022.07.04 |