
Deque 란 Queue에서 확장된 개념이다. 선입선출로 가장 첫번째 node만 꺼내고 빼올 수 있던 단방향 구조인 Queue와는 달리 Deque ( Double-ended Queue)는 양방향 구조이다. Queue의 연장선이기 때문에 Queue와의 차이점은 한쪽에서만 뺄 수 있느냐(단방향이냐) 양쪽에서 뺄 수 있느냐(양방향이냐)일 뿐 다른 차이점은 없다. 따라서 단방향구조였던 Queue 인터페이스를 상속받아서 양방향으로 메소드를 더 추가해주는 과정을 거친 것이 Deque라고할 수 있다. 구현 Deque는 구조적으로 Queue의 기능을 양방향으로 확장한 개념이기 때문에 Queue를 상속받아서 구현한다. Queue 구현에서 메소드는 너무 단순했다. LinkedList가 Queue를 상속(Deque를 상속받..

Queue 란 Stack과는 다르게 데이터가 들어간 순서대로 나오는 즉, FIFO(First In Last Out) 선입선출의 자료구조이다. First In First Out 선입 선출 먼저 들어간 것이 먼저 나온다. 데이터를 추출할 때 Stack은 마지막 데이터를 꺼내는 것과 달리 가장 앞에 있는 index를 꺼낸다. 먼저 들어온(push)된 값을 먼저 보낸다(pop)가 기본 베이스로 깔려서 다른 PrioritoyQueue나 Deque로 개념을 연장할 수 있다. Queue는 사실 먼저 들어온게 먼저 나가는 대기열로 생각하면 되고 대학생때 고통받는 수강신청에서 트래픽 대기가 보통 Queue 형태로 구현되어있다. 구현 사실 Queue도 또한 Collection 프레임워크에 포함되어있고, 물론 Stack과 ..

회원 관리 웹 어플리케이션 요구사항 지금부터는 회원 가입과 회원 목록 조회의 기능을 통해서 Servlet으로 웹서비스를 개발해보면서 그 구조에 대해서 이해보고자 한다. 기능 요구 사항 회원 저장 가입된 회원 목록 조회 일단 회원 저장과 목록을 보려면 회원에 대한 정보를 나타내는 클래스와 회원 정보를 담는 저장소가 필요하다. 우리는 회원 정보를 나타내는 회원 도메인 모델을 만들 수 있다. package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; pu..

문제 설명 각 점에 가중치가 부여된 트리가 주어집니다. 당신은 다음 연산을 통하여, 이 트리의 모든 점들의 가중치를 0으로 만들고자 합니다. 임의의 연결된 두 점을 골라서 한쪽은 1 증가시키고, 다른 한쪽은 1 감소시킵니다. 하지만, 모든 트리가 위의 행동을 통하여 모든 점들의 가중치를 0으로 만들 수 있는 것은 아닙니다. 당신은 주어진 트리에 대해서 해당 사항이 가능한지 판별하고, 만약 가능하다면 최소한의 행동을 통하여 모든 점들의 가중치를 0으로 만들고자 합니다. 트리의 각 점의 가중치를 의미하는 1차원 정수 배열 a와 트리의 간선 정보를 의미하는 edges가 매개변수로 주어집니다. 주어진 행동을 통해 트리의 모든 점들의 가중치를 0으로 만드는 것이 불가능하다면 -1을, 가능하다면 최소 몇 번만에 가..

Stack 이란 Stack, 우리는 스택이라는 용어를 쌓여가는 것에 사용한다. 1스택, 2스택 .... . 즉, Stack은 데이터가 쌓여가는 것을 나타내는 자료구조로 생각하면 편한다. Stack을 이야기할 때 항상 따라서 나오는 용어는 LIFO(Last In First Out)이다. (FILO(First In Last Out) 선입후출로 표현하기도 하는데 여기서는 후입선출로 통일하여 이야기 할 것이다.) Last In First Out 후입 선출 먼저 나온 것이 먼저 나온다. Stack은 데이터를 쌓아가면서 가장 마지막에 넣은 데이터를 먼저 꺼내는 형태의 자료구조를 말한다. 개념 자체는 매우 단순하다 먼저 넣을수록 밑으로 쌓여가고 빼낼때는 가장 최근에 넣은 값을 빼는 것, 예로 들면 웹페이지의 뒤로가기..

[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 오지 탐험가인 프로도는 탐험 도중 n개의 방으로 이루어진 지하 동굴을 탐험하게 되었습니다. 모든 방에는 0부터 n - 1 까지 번호가 붙어있고, 이 동굴에 들어갈 수 있는 유일한 입구는 0번 방과 연결되어 있습니다. 각 방들은 양방향으로 통행이 가능한 통로로 서로 연결되어 있는데, 서로 다른 두 방을 직접 연결하는 통로는 오직 하나입니다. 임의의 서로 다른 두 방 사이의 최단경로는 딱 한 가지만 있으며, 또한 임의의 두 방 사이에 이동이 불가능한 경우는 없습니다. 탐험에 앞서 이 지하 동굴의 지도를 손에 넣은 프로도는 다음과 같이 탐험 계획을 세웠습니다. 모든 방을 적어도 한 번은 방문해야 합니다. 특정 방은 방문하기 전에 반드시 먼저 ..

인터페이스 정의하는 방법 인터페이스는 결국 앞전에 상속에서 배웠던 "추상클래스"이다. 추상클래스란 추상화한 메소드를 가진 메소드 즉, 아직 구현되지 않은 메소드들을 가진 클래스였다. 인터페이스는 이 추상클래스에서 추상화 정도가 매우 높아서 오로지 추상 메소드와 상수만을 멤버로 가진 클래스를 말한다. 추상클래스가 조금 만들어둔 설계도라고하면 인터페이스는 아예 아무것도 안만든 설계도라고 할 수 있다. interface 인터페이스이름{ public static final 타입명 변수이름 = 값; public abstract 메소드명 (매개변수, ...); } 이때 모든 상수는 반드시 public static final 이어야하며, 생략하여 사용할 수 있다. 메소드도 마찬가지로 public abstract 이어..

개발환경 프로젝트 생성 : https://start.spring.io/ GitHub Repository : https://github.com/jinyoungchoi95/learn_servlet Gradle 6.8.3 Java 11 Spring Boot 2.4.4 Packaging : War Dependency : Spring web, Lombok Spring Boot 프로젝트를 생성하였는데 Packaging 방식을 Jar가 아닌 War로 한 이유는 차후 JSP를 사용하기 위함. Servlet 환경 구성 서블릿은 원래 Tomcat 등의 WAS를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 WAS를 실행하는 방식으로 사용한다. 하지만 Spring Boot는 이런 고질점을 해결하고자 Tomc..
- Total
- Today
- Yesterday