[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..
[Data Structures] Hash 파해치기 (Hash Table, HashMap, HashSet)
·
Algorithm & Data Structures/Data Structures
· 들어가며코딩테스트에서 가장 많이 사용하는 자료구조 중 하나가 바로 Hash입니다. 특히 다음 같은 상황에서 거의 필수적으로 사용해야 합니다. 특정 값이 존재하는지 빠르게 확인해야 할 때문자열이나 숫자의 개수를 세야 할 때중복을 제거해야 할 때방문 여부를 저장해야 할 때Java에서는 이러한 기능을 위해 HashMap과 HashSet을 주로 사용합니다. 그렇다면 HashMap은 왜 빠를까요? 이를 이해하려면 먼저 Direct Address Table이라는 개념부터 살펴봐야 합니다.· Direct Address TableDirect Address Table(직접 주소화 테이블)은 Key를 그대로 배열의 Index로 사용하는 자료구조입니다. 예를 들어 출석번호와 이름을 저장한다고 해보겠습니다.출석 번호이름2..
[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..
[OpenAI] Response API와 Structured Outputs 이해하기
·
BackEnd/AI & LLM
· 들어가며AI 기능을 서비스에 붙이다 보면,모델이 그럴듯한 문장을 잘 만들어주는 것만으로는 부족할 때가 많습니다. 사람이 읽을 답변이라면 자연어 문장만으로도 충분하지만,서버가 그 값을 저장하거나 DTO로 변환하거나 프론트엔드 화면에 일정한 형태로 보여줘야 한다면 이야기가 달라집니다. 예를 들어 사용자가 모델에게학생들의 성적을 보내고, 분석하는 작업을 시킨다고 해봅시다. 국어 95점, 영어 80점, 수학 70점입력을 토대로 "이 성적을 분석해줘" 라고 시켜봅시다.평균은 81점이고, 가장 잘한 과목은 국어입니다.언어 영역(국어·영어)은 강점을 보이지만, 수학 학습을 보완하면 더욱 균형 잡힌 성적을 기대할 수 있습니다. 대충 이런식으로 정리를 해주는데, 이는 사람이 보기에는 충분히 이해가 되는 답변입니다. ..