Stack - LIFO
.push() : 값 추가
.peek() : 가장 상단 값 (삭제x), 비어 있으면 throws an exeption
.pop() : 가장 상단 값 (삭제o), 비어 있으면 throws an exeption
.search() : 최상단으로부터의 거리 (아래 예시 참고), 만약 해당 값이 존재하지 않으면 -1 리턴
.size()
.contains()
.empty()
import java.util.*;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(5);
stack.push(7);
System.out.println(stack);
System.out.println(stack.search(1)); // 4
System.out.println(stack.search(3)); // 3
System.out.println(stack.search(5)); // 2
System.out.println(stack.search(7)); // 1
System.out.println(stack.search(10)); // -1
System.out.println(stack.peek()); // Stack의 가장 상단 값을 출력합니다.(삭제는 하지 않습니다.)
stack.pop(); // Stack의 가장 상단 값을 제거합니다.
System.out.println(stack);
System.out.println(stack.size());
System.out.println(stack.contains(1));
System.out.println(stack.empty()); // Stack이 비어있으면 true를, 그렇지 않으면 false를 반환합니다.
System.out.println(stack);
}
}
Queue - FIFO
.add() 값 추가
.offer() 값 추가, 추가되지 않았으면 return false
.peek() : 가장 상단 값 (삭제x), 비어 있으면 null
.element() : 가장 상단 값 (삭제x), 비어 있으면 throws an exeption
.poll() : 가장 상단 값 (삭제o), 비어 있으면 null
.remove() : 가장 상단 값 (삭제o), 비어 있으면 throws an exeption
.size()
.contains()
import java.util.*;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(3);
queue.add(5);
System.out.println(queue); // [1, 3, 5]
System.out.println(queue.poll()); // Queue에서 객체를 꺼내서 반환합니다.
System.out.println(queue); [3, 5]
System.out.println(queue.peek()); //Queue에서 삭제 없이 요소를 반환합니다.
System.out.println(queue);
}
}
ArrayDeque
공식문서: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ArrayDeque.html
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>(); // ArrayDeque를 이용한 선언(제네릭스 이용)
arrayDeque.addFirst(1);
arrayDeque.addFirst(2);
arrayDeque.addFirst(3);
arrayDeque.addFirst(4); // arrayDeque의 앞에 값을 삽입
System.out.println(arrayDeque); // [4, 3, 2, 1]
arrayDeque.addLast(0); // arrayDeque의 끝에 값을 삽입
System.out.println(arrayDeque); [4, 3, 2, 1, 0]
arrayDeque.offerFirst(10); // addFirst와 비슷하지만 큐의 크기 문제가 생길 때, offerFirst는 false를,
// addFrist는 exception을 반환합니다.
System.out.println(arrayDeque); //[10, 4, 3, 2, 1, 0]
arrayDeque.offerLast(-1); // arrayDeque의 끝에 값을 삽입
System.out.println(arrayDeque); // [10, 4, 3, 2, 1, 0, -1]
System.out.println(arrayDeque.size()); // 7
System.out.println(arrayDeque.removeFirst()); // 첫번째 값을 제거하면서 그 값을 리턴 // 10
System.out.println(arrayDeque.removeLast()); // 마지막 값을 제거하면서 그 값을 리턴 // -1
System.out.println(arrayDeque); //[4, 3, 2, 1, 0]
System.out.println(arrayDeque.size()); // 5
System.out.println(arrayDeque.pollFirst()); // 첫번째 값을 반환 및 제거하면서 그 값을 리턴 //4
System.out.println(arrayDeque); // [3, 2, 1, 0]
System.out.println(arrayDeque.size()); // 4
System.out.println(arrayDeque.pollLast()); // 마지막 값을 반환 및 제거하면서 그 값을 리턴 //0
System.out.println(arrayDeque); // [3, 2, 1]
System.out.println(arrayDeque.size()); // 3
System.out.println(arrayDeque.peekFirst()); // 첫번째 값을 반환, 제거하지 않음 // 3
System.out.println(arrayDeque.peekLast()); // 마지막 값을 반환, 제거하지 않음 // 1
System.out.println(arrayDeque.size()); // 3
}
}
스택 이용한 알고리즘 문제 : 크레인 인형뽑기 게임 https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
GitHub - Suyoung225/JavaPrac
Contribute to Suyoung225/JavaPrac development by creating an account on GitHub.
github.com
'JAVA' 카테고리의 다른 글
[JAVA] 싱글톤 패턴 정리 (0) | 2022.10.05 |
---|---|
[JAVA] JVM이란? 개념 및 구조 (0) | 2022.10.02 |
[JAVA] 날짜와 시간 ( java.time패키지) (1) | 2022.09.29 |
[Java] 진수변환(10진수 <->2,8,16진수) (0) | 2022.09.27 |
정규 표현식 Regular expressions (Regex) (1) | 2022.09.25 |
댓글