알고리즘 풀때 자주 쓰는 문법에 대해서 정리해보려고 한다.
항상 IDE에 도움을 받아서 사용하기에 정리할 필요가 없었는데, 요즘 알고리즘을 맨날 풀면서 Web에서 쌩으로 하려니까 생각이 잘 안나서 자주 찾아보는데 정리해서 헷갈리지 않도록 하자.
import java.util.*;
import문 작성을 잊지말자!
Arrays Class 관련 함수들을 정리해보려고 한다.
→ 배열의 주소값이 아닌 배열의 내용을 출력해주는 함수
import java.util.*;
int[] arr = new int[6] { 2, 4, 6, 3, 1, 5 }
System.out.println(Arrays.toString(arr)); // [2, 4, 6, 3, 1, 5]
→ 배열을 순차적으로 출력해주는 함수
import java.util.*;
int[] arr = new int[6] { 2, 4, 6, 3, 1, 5 }
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5, 6]
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr)); // [6, 5, 4, 3, 2, 1]
→ 배열의 일정부분을 복사하는 함수 ( Deep Copy )
import java.util.*;
int[] arr = new int[6] { 2, 4, 6, 3, 1, 5 }
int[] arr_copy = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(arr_copy)); // [2, 4, 6]
arr_copy = Arrays.copyOf(arr, 8);
System.out.println(Arrays.toString(arr_copy)); // [2, 4, 6, 3, 1, 5, 0, 0]
→ 배열의 일정부분을 지정하여 복사하는 함수 ( Deep Copy )
import java.util.*;
int[] arr = new int[6] { 2, 4, 6, 3, 1, 5 }
int[] arr_copy = Arrays.copyOfRange(arr, 1, 3);
System.out.println(Arrays.toString(arr_copy)); // [4, 6, 3]
arr_copy = Arrays.copyOfRange(arr, 5, 8);
System.out.println(Arrays.toString(arr_copy)); // [5, 0, 0, 0]
→ 배열을 ArrayList로 변경하여주는 함수
import java.util.*;
int[] arr = new int[6] { 2, 4, 6, 3, 1, 5 }
List<Integer> arr_list = Arrays.asList(arr);
System.out.println(arr_list.toString()); // [2, 4, 6, 3, 1, 5];
→ 배열이 정렬된 상태에서만 사용이 가능하다.
→ 정렬되어 있는 배열에서 값이 있으면 양수인 인덱스 값을 반환해주며, 값이 없으면 음수인 인덱스 값을 반환해준다. 0번 인덱스 앞이 -1부터 시작해서 -1씩 줄어들면서 위치를 표시해준다.
import java.util.*;
int[] arr = new int[6] { 2, 8, 4, 6, 10 }
Arrays.sort(arr);
System.out.println(arr.toString()); // [2, 4, 6, 8, 10];
int index = Arrays.binarySearch( arr, 6 );
System.out.println(index); // 2;
index = Arrays.binarySearch( arr, 10 );
System.out.println(index); // 4;
index = Arrays.binarySearch( arr, 1 );
System.out.println(index); // -1;
index = Arrays.binarySearch( arr, 5);
System.out.println(index); // -3;
List Class 관련 함수들을 정리해보려고 한다.
→ 순서대로 리스트를 추가하거나, 인덱스를 지정하여 해당 인덱스에 값을 삽입한다.
리스트의 크기는 자동으로 증가한다.
import java.util.*;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list.toString()); // [1, 2, 3]
list.add(0, 10);
System.out.println(list.toString()); // [10, 1, 2, 3]
→ 해당 index의 리스트값을 가져온다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
int item = list.get(0);
System.out.println(item); // 1
→ 해당 index의 리스트 값을 지정 value로 변경한다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
System.out.println(list.toString()); // [1, 2, 3]
list.set(0, 10);
System.out.println(list.toString()); // [10, 2, 3]
→ 리스트에서 value 값을 찾아서 해당 index를 반환한다. 값이 없다면 -1을 반환한다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
int index = list.indexOf(2);
System.out.println(index); // 1
index = list.indexOf(10);
System.out.println(index); // -1
→ 리스트에서 가장 마지막 value 값을 찾아서 해당 index를 반환한다. 값이 없다면 -1을 반환한다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(10);
add(20);
add(30);
add(20);
}};
int index = list.lastIndexOf(20);
System.out.println(index); // 3
index = list.lastIndexOf(40);
System.out.println(index); // -1
→ 해당 index의 리스트 값을 지운다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
System.out.println(list.toString()); // [1, 2, 3]
list.remove(1);
System.out.println(list.toString()); // [1, 3]
→ 해당 value 값이 리스트에 포함되어 있는지 true / false 로 반환해준다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
boolean flag = list.contains(2);
System.out.println(flag); // true
flag = list.contains(4);
System.out.println(flag); // false
→ 리스트를 초기화한다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
System.out.println(list.toString()); // [1, 2, 3]
list.clear();
System.out.println(list.toString()); // []
→ 리스트가 비었는지 true / false 로 반환해준다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
boolean flag = list.isEmpty();
System.out.println(flag); // false
list.clear();
flag = list.isEmpty();
System.out.println(flag); // true
→ 리스트의 길이를 반환해준다. Array의 length와 같은 기능이다.
import java.util.*;
List<Integer> list = new ArrayList<>() {{
add(1);
add(2);
add(3);
}};
int size = list.size();
System.out.println(size); // 3
자주 사용하는 Arrays, List Class의 함수에 대해서 정리해보았다.
알고리즘을 풀면서 또 자주 찾아보는 Class가 있으면 정리해야겠다.