[Data Structures] Stack(스택) 파해치기
·
Algorithm & Data Structures/Data Structures
· Stack(스택)이란?- Stack이란 무엇인가Stack(스택)은 가장 기본적인 선형 자료구조 중 하나입니다.. 프링글스 통이나 접시를 쌓아 놓은 모습을 떠올리면 이해하기 쉽습니다. Stack은 데이터를 한쪽 끝에서만 삽입하고 삭제할 수 있으며가장 나중에 들어온 데이터가 가장 먼저 나가는 LIFO(Last In First Out) 구조를 가집니다.- Stack의 특징Stack은 하나의 입구만 존재합니다.데이터를 넣을 때도 같은 위치, 꺼낼 때도 같은 위치를 사용합니다. 항상 가장 위(Top)의 데이터만 접근할 수 있으며중간 데이터를 직접 접근하는 것은 지원하지 않습니다.- Stack 시간 복잡도연산시간 복잡도PushO(1)PopO(1)PeekO(1) Stack은 Top 위치만 관리하면 되기 때문에 대..
[Data Structures] Queue(큐) 파해치기
·
Algorithm & Data Structures/Data Structures
· Queue(큐) 란?- Queue란 무엇인가Queue(큐)는 가장 기본적인 선형 자료구조 중 하나입니다. 맛집 줄을 서는 모습을 떠올리면 이해하기 쉽습니다.먼저 줄을 선 사람이 먼저 서비스를 받고, 나중에 온사람은 뒤에서 기다리는 구조입니다. 따라서 Queue는 먼저 들어온 데이터가 먼저 나가는 FIFO(First-In-First-Out)의 특징을 가지고 있습니다.- Queue의 특징Queue는 양쪽 끝에서 서로 다른 작업이 이뤄집니다.앞쪽(front): 데이터를 꺼내는 위치뒤쪽(rear): 데이터를 삽입하는 위치Queue에서 데이터는 항상 뒤에서 삽입되고 앞에서만 삭제됩니다. 이러한 구조덕에 입력 순서를 그대로 유지해야 하는 상황에서 많이 사용됩니다.- Queue 시간 복잡도연산시간 복잡도삽입(En..
[JAVA] JVM과 Java의 실행 과정에 대해서 알아보자
·
JAVA
· JVM(Java Virtual Machine)- JVM 이란?JVM(Java Virtual Machine)이란Java 바이트 코드를 실행하기 위한 가상의 실행 환경(Virtual Machine)입니다. 쉽게 말하면 Java 프로그램을 실행시켜 주는 프로그램이라고도 할 수 있습니다. Java 프로그램은 CPU가 이해할 수 있는 기계어(Machine Code)를 직접 생성하지 않습니다. 대신에 JVM이 이해할 수 있는 바이트 코드를 생성하고, JVM이 이를 OS에 맞는 기계어로 변환하여 실행합니다. Java 프로그램 → JVM → OS → CPU와 같은 구조로 실행됩니다.- JVM이 필요한 이유1️⃣ 플랫폼 독립성JVM이 존재하는 가장 큰 이유는 플랫폼 독립성입니다. 예를 들어C 프로그램은 Windows..
[BOJ] 백준 9465 - 스티커 [JAVA]
·
문제풀이/BOJ
BOJ 9465https://www.acmicpc.net/problem/9465 문제 스티커를 떼면 그 스티커의 십자방향의 스티커들은 앞으로 사용할 수 없다고 하고, 이 조건하에 땐 스티커들의 점수의 최댓값을 구하는 문제입니다. 입력첫째 줄에 테스트 케이스 T각 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)다음 두줄에는 n개의 정수(0 ≤ 정수 ≤ 100) → 그 위치에 해당하는 스티커의 점수출력각 테스트 케이스 마다, 2n개의 스티커 중에서 두 변을 공유하지 않는 스티커 점수의 최댓값을 출력 풀이DP 배열 정의이 문제에서 DP 배열은 자동으로 상하좌우에 대한 스티커를 배제하기 위해서, i열에서 state에 따른 최대 점수로 생각했습니다.n이 몇으로 주어지든 배열은 2행 n열로 ..
[JAVA] Java Comparator 완전 정리 (Comparable과의 차이, 람다 표현까지)
·
JAVA
저번 배열과 리스트를 정렬하는 여러가지 방법에 대해서 이야기했던 내용에 나왔던 Comparator에 대해서 공부한 내용을 정리해보려고 합니다.2025.10.14 - [알고리즘/이론] - [알고리즘/정렬] 배열과 리스트를 정렬하는 여러가지 방법 (Java, Sorting) [알고리즘/정렬] 배열과 리스트를 정렬하는 여러가지 방법 (Java, Sorting)코드를 작성하다 보면 데이터를 오름차순 또는 내림차순으로 정렬해야 하는 상황이 자주 생깁니다. Java에서는 Arrays.sort() 메서드, Collections.sort() 메서드 등을 사용해 다양한 정렬 알고리즘 기반myojun.tistory.com Comparator는 Java에서 객체를 정렬할 때 사용됩니다. 하지만 사용자 지정 정렬 기준을 따..