전체 글 (56) 썸네일형 리스트형 Guide - RESTful 웹 서비스 구축 https://spring.io/guides/gs/rest-service Getting Started | Building a RESTful Web ServiceIn Spring’s approach to building RESTful web services, HTTP requests are handled by a controller. These components are identified by the @RestController annotation, and the GreetingController shown in the following listing (from src/main/java/com/examplespring.io 목표HTTP GET 요청을 수락하는 서비스요청 URL : http://localh.. Guide - 스프링 부트를 이용한 애플리케이션 빌드 https://spring.io/guides/gs/spring-boot Spring Boot 기능클래스패스에 따라 필요한 설정을 자동으로 구성 코드 생성, 수정 없이 애플리케이션 실행 시점에 동적으로 빈과 설정을 연결Spring MVC가 클래스 패스에 있으면 필요한 빈들을 자동으로 추가하고 서블릿 컨테이너가 필요하므로 자동으로 Tomcat을 서버로 사용Jetty가 클래스 패스에 있으면 자동으로 Tomcat 대신에 Jetty를 서버로 사용인프라 설정에 대한 부담 감소개발자가 직접 정의한 빈 우선 프로젝트 초기화 https://start.spring.io 접속빌드 도구, 언어, 스프링 부트 버전 선택Dependecies 추가Generate 클릭 후 zip 파일 다운로드- 설정 예시 컨트롤러 생성 // sr.. [백준] 9663 - N-queen 문제 N * N 체스판 위에 퀸 N개가 서로 공격할 수 없게 둘 수 있는 방법의 수를 구하여라 입력 : 퀸의 갯수 N (1 출력 : 방법의 수시간 제한 : 10초 문제 분석 1. 모든 칸에 퀸을 놓으면서 확인 N * N 칸에 N개의 퀸을 놓는 조합이므로 시간 복잡도는 약 O(N^2N) 정도로 매우 커지게 됩니다그런데, 모든 칸을 확인할 필요가 있을까요? 이미 한 행에 퀸이 놓여져 있다면 그 열에 나머지 칸에 퀸을 넣는 경우는 고민하지 않아도 됩니다. 이미 불가능하니까요2. 열 가지치기QueenXXXXXXX 또한 이미 놓여진 열은 다음 행에도 놓을 수 없기에 그 경우도 고민하지 않아도 됩니다3. 행 가지치기QueenXXXXXXXX 이제 문제는 14개의 칸에 14개의 퀸을 놓는 경우의 수로 바꿀.. 자료 구조 (7) : 유니온 파인드(Union Find) 유니온 파인드, 서로소 집합여러 개의 원소가 있을 때, 그 원소들이 어떤 집합에 속하는지 효율적으로 관리하기 위한 자료 구조 주요 연산find(x) : 원소 x가 속한 집합의 대표를 찾는 연산으로, 원소 x가 어느 집합에 속해 있는지 찾는 데 사용union(x, y) : 원소 x와 원소 y가 속한 집합을 합치는 연산사용 상황(같은 집합 내 연산)최소 스패닝 트리(크루스칼 알고리즘)최소 공통 조상네트워크 연결 확인연산 최적화find(x) : find(x) 수행 시, 지나간 모든 노드가 직접 루트 노드를 가리키도록 변경 union(x, y) : 높이가 낮은(크기가 작은) 집합을 높이가 높은(크기가 큰) 집합에 병합연산 최적화를 적용해야 유니온 파인드 대부분 연산의 시간 복잡도가 O(α(N))* α(N) 시간.. 자료 구조 (6) : 우선순위 큐(Priority Queue) & 힙(Heap) 우선순위 큐가장 높은 우선순위를 갖는 데이터가 먼저 나오는 자료 구조 주요 연산Adding(add) : 우선순위 큐에 데이터를 삽입Polling(poll) : 가장 높은 우선순위의 데이터를 제거 후 반환Peeking(peek) : 가장 높은 우선순위의 데이터를 반환(제거하지 않음)사용 상황(우선순위에 따라 자료를 꺼내야 하는 경우)최단 경로 알고리즘(다익스트라)최소 스패닝 트리(MST) 알고리즘(프림)프로세스 스케줄링시간 복잡도 힙삽입(Adding)O(logN)다음 값 삭제(Polling)O(logN)다음 값 조회(Peeking)O(1)이진 힙 생성O(N)특정 값 제거(Removing)O(N)해시 테이블 활용 특정값 제거(Removing)O(logN)포함 확인(Contains)O(N)해시 테이블 활용 .. 자료 구조 (5) : 큐(Queue) 큐먼저 넣은 자료가 먼저 나오는 선형 자료 구조 주요 연산enqueue(offer, add) : 큐의 뒤쪽(Rear)에서 데이터를 삽입dequeue(poll, remove) : 큐의 앞쪽(Front)에서 데이터를 제거 후 반환peek(element, peek) : 큐의 앞쪽 데이터(다음에 나올 데이터)를 반환(제거하지 않음)* Java에서 offer, poll, element는 값이 없을 때 예외를, add, remove, peek은 값이 없을 때 null과 같은 특수 값을 반환특징선입선출(FIFO) : 먼저 들어간 데이터가 먼저 제거단방향성: 보통 뒤쪽(Rear)에서 삽입, 앞쪽(Front)에서 삭제(Deque는 양쪽에서 가능)사용 상황(시간 순서대로 작업을 진행해야 하는 경우)BFS작업 스케줄러대기.. 자료 구조 (4) : 스택(Stack) 스택목록의 끝(top)에서만 접근이 가능한 선형 자료 구조 주요 연산push : 스택의 top에 데이터를 삽입pop : 스택의 top의 데이터를 제거 후 반환peek : 스택의 top의 데이터를 반환(제거하지 않음)특징후입선출(LIFO) : 가장 최근에 삽입된 데이터가 먼저 제거스택에서 Top에서부터만 접근 가능사용 상황(시간 순으로 이전 작업을 확인해야 하는 경우)괄호 검사되돌리기(Ctrl + z)사이트 뒤로 가기, 앞으로 가기DFS함수 호출, 콜 스택시간 복잡도 단일삽입(push)O(1)삭제(pop)O(1)조회(peek)O(1)조회(전체)O(n)크기(size)O(1) Stack 구현 예시 import java.util.*;public class ListStack { private LinkedList.. 자료 구조 (3) : 연결 리스트(Linked List) 연결 리스트노드가 순서대로 연결된 형태를 가진 자료 구조 구조노드(Node) : 데이터(저장할 값)과 포인터(다음 노드의 위치)를 저장헤드(Head) : 연결 리스트의 시작 지점(첫 번째 노드)테일(Tail) : 연결 리스트의 끝으로 마지막 노드의 포인터는 일반적으로 null을 가리킴종류단일 연결 리스트(Singly Linked List) : 노드는 다음 노드에 대한 참조만 가지고 한 방향으로만 탐색이 가능이중 연결 리스트(Doubly Linked List) : 노드는 이전 노드와 다음 노드에 대한 참조를 가지고 양방향 탐색이 가능원형 연결 리스트(Circular Linked List) : 마지막 노드가 첫 번째 노드를 가리키는 형태특징인덱스가 없어 조회 시 순차 탐색을 해야 함연속된 메모리 공간을 사용.. 이전 1 2 3 4 5 6 7 다음