Import
import java.util.*;
import는 java.util.* 하나만 선언하면 대부분의 라이브러리 함수, 콜렉션 함수들을 사용할 수있다. 코딩테스트시 이거하나 선언하고 시작하면 함수를 찾지 못한다는 에러는 만나지 않을 것이다.
Sort 함수
int[] arr = {4,2,1,3};
Arrays.sort(arr);
출력 결과는 [1, 2, 3, 4] 로 정말 자주 사용한다.
Math 함수
int answer = 1;
answer = Math.max(answer,100);
// answer : 100
answer = Math.min(answer,100);
// answer : 1
다음과 같은 형태로 answer의 최대 최소값을 사용할 때 쓰는 방법이다.
min()은 입력받은 두개의 인자 값 중 작은 값을 리턴
Collection 함수들 사용법
public class PQ implements Comparable<PQ> {
int a;
int b;
public PQ(int a, int b) {
super();
this.a = a;
this.b = b;
}
@Override
public int compareTo(PQ o) {
return this.a - o.a;
}
}
Collection 함수들인 경우 Integer, String을 사용하지만 편의를 위해 내가 설정한 class 파일을 어떻게 다루는가 보겠다.
다음과 같이 class 속성중 compareTo를 재정의 함으로써 Collecttion의 함수들을 사용할 수 있다.
PriorityQueue
Queue<Integer> MinHeap = new PriorityQueue<>();
Queue<Integer> MaxHeap = new PriorityQueue<>(Comparator.reverseOrder());
우선순위큐는 다잌스트라, minheap,maxheap을 이용한 문제들을 다룰 때 쉽게 사용한다.
Map, Set
Map<String, Integer> hash = new TreeMap<String, Integer>();
Map<String, Integer> hashGenres = new TreeMap<String, Integer>();
Set<Pair> set[] = new TreeSet[100];
hash.put(value, hash.getOrDefault(value, 0) + plays[i]);
if (!hashGenres.containsKey(value)) {
hashGenres.put(value, genersNum++);
}
for (int i = 0; i < 100; i++)
set[i] = new TreeSet<>();
문자열을 나누는 방법 split도 있지만 StringTokenizer를 소개한다.
StringTokenizer st = new StringTokenizer(operation);
String order = st.nextToken();
int num = Integer.parseInt(st.nextToken());
문자열을 하나하나 입력하고 정답을 뒤로 출력하고 싶을때는
StringBuilder sb = new StringBuilder();
sb.reverse();
문자열을 부분부분 필요한것만 얻고 싶을 때
str.substring(3, 6);
// 0부터 시작하는 인덱스에서 3번째부터 6번 미만까지 (즉 5번째)
2차원 ArrayList를 만들고 싶을 때 (즉 동적으로 바뀌는 3차워 배열을 만들고 싶을 때 사용하는 방법)
static ArrayList<Integer>[][] map;
map = new ArrayList[N + 1][N + 1];
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
map[i][j] = new ArrayList<Integer>();
}
}
마지막으로는 list를 순회하는 방법 (Iterator를 사용하면 순회하면서 제거하는게 가능하기 때문에 편한다)
for (Iterator<Pair> it = list.iterator(); it.hasNext();) {
Pair p = it.next();
if(p.a == 5)
it.remove();
}
연관된 글 :
참고 :
'알고리즘 , 문제해결 > 이론' 카테고리의 다른 글
[알고리즘] 알고리즘 공부 시작하기 (참고 사이트) (0) | 2023.03.17 |
---|---|
[알고리즘] 시간 복잡도 (0) | 2023.03.16 |