상단에 import.java.util.* 을 먼저 추가한다.
추가로는 add와 push를 사용 가능하다.
삭제로는 pop 사용
public static void main(String[] args) {
Stack<Integer> stk = new Stack<>();
stk.push(2); // push사용
stk.add(3); //add 사용
System.out.println(stk);
stk.pop();
System.out.println(stk);
}
2와 3이 잘 들어가고, 3이 pop 된 것을 확인할 수 있다.
push와 add의 차이
push()는 stack에서 제공, add()는 List에서 제공하는 메서드
push()의 리턴값은 추가한 객체이고, add()의 리턴값은 boolean이다.
Stack에서는 push()를 쓰는 것을 추천한다. 그래야 스택 사용을 알아보기 쉽다.
기본적으로 ArrayDeque<>()를 사용한다.
스레드 세이프를 보장하진 않지만, 효율이 좋다고 한다.
자세한 내용은 해당 블로그에서 알아봤다.
public static void main(String[] args) {
Deque<Integer> q = new ArrayDeque<>();
q.addLast(3);
q.addLast(2);
q.addLast(1);
System.out.println(q);
q.removeFirst();
System.out.println(q);
q.removeLast();
System.out.println(q);
}
3, 2, 1이 잘 삽입 되었고, 앞에서 3과 뒤에서 1이 잘 삭제 된 것을 볼 수 있다.
파이썬에서 주로 arr.sort()로 쓰이는 기능이다.
public static void main(String[] args) {
Integer[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr);
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
Arrays.sort(arr, (i1, i2) -> i2 - i1);
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
}
Arrays.sort(arr);
이건 짐작하듯 오름차순 정렬
Arrays.sort(arr, (o1, o2) -> o2 - o1);
이게 내림차순 정렬(람다 표현식)이다.
사실 오름차순도 Arrays.sort(arr, (o1, o2) -> o1 - o2);
이 표현이 오름차 순인데 그냥 Arrays.sort(arr);
로 간단하게 쓴다.
1차원 배열 정렬과 동일한데 , 몇 번째 원소로 정렬할 것인지 index를 넣어준다.
public static void main(String[] args) {
int[][] arr = {{2, 4}, {6, 3}, {1, 5}};
Arrays.sort(arr, (o1, o2) -> o2[1] - o1[1]);
System.out.println(Arrays.deepToString(arr));
}
위 코드는 o2[1] - o1[1]
두번째 원소로 내림차순 정렬이다.
아래 코드를 참고하면 o1[n] - o2[n]
을 어떻게 써야하는지 알 수 있다.
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0]; // 첫번째 숫자 기준 오름차순
return o2[0]-o1[0]; // 첫번째 숫자 기준 내림차순
return o1[1]-o2[1]; // 두번째 숫자 기준 오름차순
return o2[1]-o1[1]; // 두번째 숫자 기준 내림차순
}
가끔 알고리즘 문제 속에, 첫번째요소는 오름차순, 두번째 요소에 대해서는 내림 차순으로 정리해야 할 때가 있다.
아래처럼 작성한다.
Arrays.sort(arr, (o1, o2) -> {
if (o1[0] == o2[0]) { // 첫 번째 요소가 같을 때
return o2[1] - o1[1]; // 두 번째 요소에 대해 내림차순 정렬
} else {
return o1[0] - o2[0]; // 첫 번째 요소에 대해 오름차순 정렬
}
});
아래의 결과가 나온다.
상단에 import java.lang.Math; 추가.
파이썬에서 쓰이던 웬만한 기능들을 사용 가능하다.
min(), max(), pow(),sqrt() 등등..
public static void main(String[] args) {
int a = -3;
int b = 2;
double c = 2.6;
System.out.println((int)Math.pow(a,b));
System.out.println(Math.abs(a));
System.out.println(Math.max(a,b));
System.out.println(Math.floor(c));
}