DEV/Java

[java] 코딩테스트 대비 java 클래스 별 메소드 정리 (2 / 2)

Bi3a 2023. 10. 5. 16:33

목차
반응형

java 코딩테스트 대비
java 코딩테스트 대비


 

⚠ 작성자 본인의 학습을 위한 메서드 정리입니다.

코딩테스트 간 java에서 자주 사용하는 메서드를 정리한 글입니다.
반박, 오탈자 시 님 말이 맞습니다. (알려주시면 감사하겠습니다)
 

[java] 코딩테스트 대비 java 메소드 정리 (1 / 2)

Table of Contents ⚠ 작성자 본인의 학습을 위한 메소드 정리입니다. java 기준 코딩테스트 간 자주 사용하는 메소드를 정리한 글입니다. 신빙성 있는 글이 아니므로 반박시 님 말이 맞습니다. 메소드

doinitright.tistory.com

 

 

 

Stack(스택) (java.util.Stack)

Stack은 FILO(First In, Last Out), LIFO(Last In, First Out) 방식의 자료구조입니다.

먼저 들어온(push) 원소가 맨 마지막에 제거(pop)되며,
반대로 마지막에 들어오는 원소가 처음으로 제거됩니다.

 

메서드 설명

구분  메소드명 호출 방법 간략 설명 시간복잡도
생성자 Stack() public Stack<E> 스택 객체를 생성합니다. -
Stack push public E push(E item) 원소를 스택에 넣습니다. O(1)
Stack pop public E pop() 스택 꼭대기의 원소를 제거 후 리턴합니다. O(1)
Stack peek public E peek() 스택 꼭대기 원소를 리턴합니다. (제거 X) O(1)
Stack empty public boolean empty() 해당 스택이 비어있는지 확인합니다. O(1)
Stack search public int search(Object o) 스택 꼭대기의 인덱스를 1로 정의하고
해당 원소의 위치를 반환합니다.
* 해당 원소가 없으면 -1을 반환합니다.
O(n)
Vector
(상속)
clear() public void clear() 현 스택을 초기화합니다. O(1)
Vector
(상속)
size() public int size() 현 스택의 사이즈를 반환합니다. O(1)

 

구현

  • 생성자, push, pop, peek
java
닫기
import java.util.Stack;
public class LearnClassMethod {
public static void main(String[] args) {
/* Stack */
// 1. 생성자
Stack<String> stack = new Stack<>();
// 2. push
stack.push("철수");
stack.push("영희");
stack.push("바둑이");
stack.push("갑돌이");
stack.push("갑순이");
System.out.println(stack);
// out : 철수, 영희, 바둑이, 갑돌이, 갑순이
// 3. pop
System.out.println(stack.pop()); // out : 갑순이
// 4. peek
System.out.println(stack.peek()); // out : 갑돌이
}
}

 

  • empty, search, size, clear
java
닫기
import java.util.Stack;
public class LearnClassMethod {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("철수");
stack.push("영희");
stack.push("바둑이");
stack.push("갑돌이");
stack.push("갑순이");
System.out.println(stack.pop()); // out : 갑순이
System.out.println(stack.peek()); // out : 갑돌이
// 5. empty
System.out.println(stack.empty()); // out : false
// 6. search
System.out.println(stack.search("철수")); // out : 4 (꼭대기에서 4번째)
System.out.println(stack.search("민철")); // out : -1 (스택에 해당 원소 없음)
// 7. size (extends Vector)
System.out.println(stack.size()); // out : 4 (철수, 영희, 바둑이, 갑돌이)
// 8. clear (extends Vector)
stack.clear();
System.out.println(stack.empty()); // out : true
}
}

 

 

Queue(큐) (java.util.Queue, java.util.LinkedList)

Queue는 FIFO(First In, First Out)
   * 먼저 들어온(push) 원소가 맨 처음에 제거되는 방식
   * 큐의 각 끝쪽이 front(앞),  rear(뒤)로 지정되어 front는 삭제 연산, rear는 삽입 연산 수행

주로 컴퓨터 버퍼 및 스레드 처리에 활용됩니다.

 

메서드 설명

구분  메소드명 호출 방법 간략 설명 시간복잡도
생성자 LinkedList() public Queue<E> 큐 객체를 생성합니다. -
Queue add boolean add(E e) 원소를 큐의 맨 뒤로 넣습니다. 
* 삽입 실패 시 IllegalStateException 리턴
O(1)
Queue offer boolean offer(E e) 원소를 큐의 맨 뒤로 넣습니다. O(1)
Queue poll E poll() 큐 맨앞에 있는 원소를 제거 후 리턴합니다.
* 제거할 값이 없으면 null 리턴
O(1)
Queue peek E peek() 큐 맨앞에 있는 원소를 리턴합니다. (제거 x)
* 리턴할 값이 없으면 null 리턴
O(1)
Collections
(상속)
contains boolean contains(E e) 큐 안에 해당 원소가 있는지 확인합니다. O(n)
Collections
(상속)
isEmpty boolean isEmpty() 해당 큐가 비어있는지 확인합니다. O(1)
Collections
(상속)
clear() public void clear() 현 큐를 초기화합니다. O(1)
Collections
(상속)
size() public int size() 현 큐의 사이즈를 반환합니다. O(1)

 

구현

  • 생성자, add, offer
java
닫기
import java.util.LinkedList;
import java.util.Queue;
public class LearnClassMethod {
public static void main(String[] args) {
/* Queue */
// 1. 생성자
Queue<String> queue = new LinkedList<>();
// 2. add, offer
queue.add("철수");
queue.add("영희");
queue.offer("바둑이");
System.out.println(queue); // out : 철수, 영희, 바둑이
}
}

 

  • poll, peak, contains
java
닫기
import java.util.LinkedList;
import java.util.Queue;
public class LearnClassMethod {
public static void main(String[] args) {
/* Queue */
Queue<String> queue = new LinkedList<>();
queue.add("철수");
queue.add("영희");
queue.offer("바둑이");
// 3. poll, peak, contains
System.out.println(queue.poll()); // out : 철수
System.out.println(queue.peek()); // out : 영희
System.out.println(queue.contains("바둑이")); // out : true
}
}

 

  • size, clear, isEmpty
java
닫기
import java.util.LinkedList;
import java.util.Queue;
public class LearnClassMethod {
public static void main(String[] args) {
/* Queue */
Queue<String> queue = new LinkedList<>();
queue.add("철수");
queue.add("영희");
queue.offer("바둑이");
queue.poll() // 원소 "철수" 제거
// 4. size, clear, isEmpty
System.out.println(queue.size()); // out : 2
queue.clear();
System.out.println(queue.isEmpty()); // out : true
}
}

 

 

Priority Queue(우선순위 큐) (java.util.PriorityQueue)

기존 Queue가 FIFO(First In, First Out) 방식을 채택한다면
Priority Queue는 먼저 들어온 데이터 순서대로 나가는 것이 아닌,
우선순위를 내부에서 결정하고 해당 순위에 따라 데이터가 나가는 구조입니다.

 

  • 내부 요소가 힙으로 구성되어 이진트리 구조로 이루어져 있습니다. (Binary Tree)
    • 데이터를 삽입할 때 우선순위를 기준으로 최대 힙 / 최소 힙을 구성합니다.
    • 시간복잡도 O(NLogN)
  • 데이터를 삽입할 때는 독립적으로 삽입되지만, 꺼낼 때는 우선순위에 의해 배출됩니다.
    • 데이터를 꺼낼 시 루트 노드를 얻어 내며 적절한 자리를 찾아서 내부 요소를 옮깁니다.

 

메서드 설명

구분  메소드명 호출 방법 간략 설명 시간복잡도
생성자 PriortyQueue<>()
public PriorityQueue<E> 우선순위 큐 객체를 생성합니다. -
Queue add boolean add(E e) 원소를 큐의 맨 뒤로 넣습니다. 
* 삽입 실패 시 IllegalStateException 리턴
O(1)
Queue offer boolean offer(E e) 원소를 큐의 맨 뒤로 넣습니다. O(1)
Queue poll E poll() 큐 맨앞에 있는 원소를 제거 후 리턴합니다.
* 제거할 값이 없으면 null 리턴
O(1)
Queue peek E peek() 큐 맨앞에 있는 원소를 리턴합니다. (제거 x)
* 리턴할 값이 없으면 null 리턴
O(1)
Collections
(상속)
contains boolean contains(E e) 큐 안에 해당 원소가 있는지 확인합니다. O(n)
Collections
(상속)
isEmpty boolean isEmpty() 해당 큐가 비어있는지 확인합니다. O(1)
Collections
(상속)
clear() public void clear() 현 큐를 초기화합니다. O(1)
Collections
(상속)
size() public int size() 현 큐의 사이즈를 반환합니다. O(1)

 

구현

  • 생성자, add, offer
shell
닫기
import java.util.PriorityQueue;
import java.util.Queue;
public class LearnClassMethod {
public static void main(String[] args) {
/* Queue */
// 1. 생성자 (우선순위 낮은 순)
Queue<String> queue = new PriorityQueue<>();
// 2. add, offer
queue.add("철수");
queue.add("영희");
queue.offer("바둑이");
System.out.println(queue); // out : [바둑이, 영희, 철수]
// 1. 생성자 (우선순위 높은 순)
Queue<String> queue2 = new PriorityQueue<>(Comparator.reverseOrder());
// 2. add, offer
queue2.add("철수");
queue2.add("영희");
queue2.offer("바둑이");
System.out.println(queue2); // out : [철수, 바둑이, 영희]
}
}

 

  • poll, peak, contains
shell
닫기
import java.util.LinkedList;
import java.util.Queue;
public class LearnClassMethod {
public static void main(String[] args) {
/* Queue */
Queue<String> queue = new PriorityQueue<>();
queue.add("철수");
queue.add("영희");
queue.offer("바둑이");
// 3. poll, peek, contains
System.out.println(queue.poll()); // out : 바둑이
System.out.println(queue.peek()); // out : 영희
System.out.println(queue.contains("철수")); // out : true
}
}

 

반응형