QUEUE
Queue<E> q = new LinkedList<>();
.add() / .offer(): 큐에 값을 넣는 메서드 -> 차이: add는 큐에 공간이 없으면 IllegalStateException을 발생시키고, offer은 false를 반환한다.
.poll() / .remove(): 큐에 값을 빼는 메서드 -> 차이: remove는 큐에 요소가 없다면 NoSuchElementException을 발생시키고, poll은 null을 반환한다.
.peek(): 큐의 가장 앞 요소를 보기만 하는 메서드. 꺼내지는 않는다.
.size() : 큐의 현재 크기를 반환하는 메서드
.isEmpty(): 큐가 비어있다면 true를, 비어있지 않다면 false를 반환한다.
.contains(): 큐에 해당하는 요소가 있는지를 반환한다. 있다면 true, 없다면 false를 반환한다.
PriorityQueue<Integer> sortedNumbers = new PriorityQueue<>((o1, o2) -> {
int x = Math.abs(o1);
int y = Math.abs(o2);
if(x == y){
return o1 > o2 ? 1 : -1;
}
return x - y;
});
백준 11286번에서 볼 수 있는 우선순위 큐.
우선순위 큐는 내가 원하는 순서에 따라 값을 정렬해주는 자료구조이다.
값이 양수라면 o1,o2의 순서를 바꾸고 음수라면 그대로 간다.
PriorityQueue<Integer> sortedNumbers = new PriorityQueue<>(Comparator.reverseOrder());
.Comparator.reverseOrder()를 사용하여 내림차순으로 정렬한 것이다. ()를 그냥 쓰면 오름차순이 된다.
정렬
Arrays.Sort() -> int[] 같은 곳에서 사용
Arrays.sort(arr, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
해석하자면 다음과 같다. o1 o2의 위치를 정할 것이다. ex) o1 = 9, o2 =3이면 39<->비교 93 뒤의 93이 더 크다. 즉 순서를 유지한다.(o1과 o2를 그대로 둬라!) -> 내림차순 정렬 가능 #여기서 사용된 arr은 string형이다. 즉 그런 것도 가능하다.
Arrays.sort(arr, Comparator.reverseOrder()): 내림차순 정렬을 하는 방식이다. 다만 주의할 점은, int[]가 아닌 Integer[]과 같이 래퍼클래스를 사용해야 한다.
Collections.sort() -> ArrayList<Integer> 같은 곳에서 사용
Collections.sort(arr, Comparator.reverseOrder()): 내림차순 정렬을 하는 방식이다.
String~~~
StringTokenizer st = new StringTokenizer(br.readLine());
st.nextToken(): 원하는 대로 자른 기준에 맞춰 하나의 단위로 존재하게 된다. 위의 문장 처럼 일반적으로 문장을 읽어온다 하면 띄어쓰기를 기준으로 구분하게 된다.
st.countTokens(): 토큰의 개수가 몇개 남아있는지 카운트 한다. 이를 이용해 정해지지 않은 문장의 길이를 받아와서 이용할 때 효율적이다.
st.hasMoreTokens(): 토큰이 남은 것이 있나 확인한다. 위와 마찬가지로 정해지지 않은 문장의 길이를 받아서 이용할 때 효율적이다.
StringBuilder sb = new StringBuilder();
sb.append(str) : 문자열을 만들 수 있게 문자를 더해준다.
.toString()를 필요로 하지않고 그냥 System.out.println(sb)로 출력 가능하다.
String s = ~~;
s.charAt(index) : 특정 위치에 있는 것을 char자료형으로 바꿔준다.
(s.charAt(j) >= 'a' && s.charAt(j) <= 'z' || s.charAt(j) >= 'A' && s.charAt(j) <= 'Z') 같이 알파벳의 위치를 찾을 수도 있다.
(알파벳 소문자 or 대문자의 경우 -'a' or -'A' 를 하면 우리가 알고 있는 알파벳 순서가 나온다! 물론 0번부터)
s.substring(start index, finish index): 문자열의 특정 구간을 잘라올 수 있다. 대신 원본 문자열이 변경되는 것은 아니다! 또한 문자 하나를 char자료형이 아닌 string자료형으로 저장하고 싶을 때 써도 좋다.
'문제 풀이 > 도구정리' 카테고리의 다른 글
[도구정리] Union-Find 알고리즘 (0) | 2024.12.04 |
---|---|
[도구정리] 투포인터 (0) | 2024.10.06 |
[도구정리] 에라토스테네스의 체 (0) | 2024.04.13 |
[도구정리]최대공약수, 최소공배수(GCD, LCM) (0) | 2024.04.12 |
[도구정리] 사방탐색 (0) | 2024.04.08 |