[#15] 자료구조(Stack & Queue) 및 Scanner

2025. 2. 14. 14:22·LG 유플러스 유레카 SW/Algorithm
목차
  1. 자료구조
  2. Stack
  3. Queue
  4. Scanner

자료구조

출처: https://levelup.gitconnected.com/java-collections-framework-class-hierarchy-latest-2024-51f9154f1f57

Stack

package collections2;

import java.util.Stack;

public class StackTest {

	public static void main(String[] args) {
		// Stack instance 생성
		Stack<String> stack = new Stack<>();

		// 요소 추가
		stack.push("첫 번째");
		stack.push("두 번째");
		stack.push("세 번째");
		System.out.println("현재 stack: " + stack);

		// 요소 제거
		String topE = stack.pop();
		System.out.println("제거된 요소: " + topE);
		System.out.println("제거 후 stack: " + stack);

		// 맨 위 요소 확인
		String peekE = stack.peek();
		System.out.println("맨 위 요소: " + peekE);
		System.out.println("peek 후 stack: " + stack);

		// stack이 비어있는 지 확인
		boolean isEmpty = stack.isEmpty();
		System.out.println("스택이 비어있나요? " + isEmpty);
	}

}

 

Queue

package collections2;

import java.util.LinkedList;
import java.util.Queue;

public class LinkedListQueueTest {

	public static void main(String[] args) {

		// Queue 객체 생성
		Queue<String> q = new LinkedList();

		// 요소 추가
		q.offer("첫 번째");
		q.offer("두 번째");
		q.offer("세 번째");
		System.out.println("현재 큐 상태: " + q);

		// 맨 앞 요소 제거
		String e = q.poll();
		System.out.println("제거된 요소: " + e);
		System.out.println("제거된 후 큐 상태: " + q);

		// 맨 앞 요소 확인
		e = q.peek();
		System.out.println("맨 앞 요소: " + e);
		System.out.println("peek 후 큐 상태: " + q);

		// queue가 비어있는 지 확인
		boolean isEmpty = q.isEmpty();
		System.out.println("큐가 비어있나요? " + isEmpty);

	}

}

Priority Queue (우선순위 큐)

  • 완전 이진 트리로 정렬된 큐
package collections2;

import java.util.Collections;
import java.util.PriorityQueue;

public class PriorityQueueTest {

	public static void main(String[] args) {
		// 정렬이 되는 Queue 생성
		PriorityQueue<Integer> pq = new PriorityQueue(); // 최소 힙 정렬
//		PriorityQueue<Integer> pq = new PriorityQueue(Collections.reverseOrder()); // 최대힙 정렬 
		
		// 요소 추가
		pq.offer(30);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(10);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(20);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(50);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(40);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(5);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(25);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(15);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(35);
		System.out.println("현재 PQ의 상태: " + pq);
		pq.offer(1);
		System.out.println("현재 PQ의 상태: " + pq); 
		
		// 요소 제거
		Integer min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);
		
		min = pq.poll();
		System.out.println("가장 작은 요소: " + min);
		System.out.println("현재 PQ의 상태: " + pq);

		
	}

}
  • 요소 추가

  • 요소 제거

 

Scanner

  • 입력받기
package collections2;

import java.util.Scanner;

public class ScannerTest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수를 입력하세요: ");
		int i = sc.nextInt(); // 입력한 것을 int로 return
		System.out.println("받은 데이터: " + i);
		
		System.out.print("실수를 입력하세요: ");
		double d = sc.nextDouble(); // double로 return 
		System.out.println("받은 데이터: " + d);
		
		sc.nextLine(); // 엔터를 치면 줄바꿈을 읽어버림, 명시적으로 버리는 처리
		System.out.print("이름을 입력하세요: ");
		String name = sc.nextLine(); // String으로 return
		System.out.println("받은 데이터: " + name);
		
		sc.close(); // 체인이 걸려있던 모든 자원을 안전하게 해제
	}
}

 

728x90
반응형

'LG 유플러스 유레카 SW > Algorithm' 카테고리의 다른 글

[#20] 알고리즘 - 최단 경로  (0) 2025.02.21
[#19] 비선형 자료구조 - 그래프  (0) 2025.02.20
[#18] 비선형 자료구조 - 트리  (0) 2025.02.19
[#17] 순열 & 조합 & 부분집합  (0) 2025.02.18
[#16] 알고리즘 - 정렬  (0) 2025.02.17
  1. 자료구조
  2. Stack
  3. Queue
  4. Scanner
'LG 유플러스 유레카 SW/Algorithm' 카테고리의 다른 글
  • [#19] 비선형 자료구조 - 그래프
  • [#18] 비선형 자료구조 - 트리
  • [#17] 순열 & 조합 & 부분집합
  • [#16] 알고리즘 - 정렬
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    기술로바꾸는세상
    Stack
    디지털혁신
    제주해커톤
    제주지역혁신플랫폼지능형서비스사업단
    Queue
    디지랩챌린지
    heap
    exhaustive search
    스택
    큐
    완전 탐색
    힙
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[#15] 자료구조(Stack & Queue) 및 Scanner
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.