분류 전체보기 364

SpringBoot(1) - SpringBoot 시작하기

1. SpringBoot 프로젝트 생성하기 1. New > Spring Starter Project 2. 프로젝트 설정 Pacakge는 three depth (__.__.__)형식으로 적는 걸 권장한다. Next를 누르면 오른쪽 화면이 나오며, 여기서 사용할 라이브러리는 추가하면 된다. 2. View 실행시켜보기 1. html 실행 static 폴더에 .html파일을 생성해서 실행하면 된다. 2. JSP 실행 보통 Spring을 Rest 즉, 데이터 주고 받는 용으로만 쓰고 Front는 다른 Framework를 쓰기 때문에 아래와 같은 설정은 default로 되어있지 않다. 1) pom.xml에 JSP 관련 라이브러리 추가 javax.servlet jstl org.apache.tomcat.embed to..

Programming/Spring 2022.06.10

Spring(12) - REST API3: Status Code 사용하기

STATUS CODE에는 1XX ~ 5XX까지 다양하게 있다. 이때, 발생되는 error에 따라 다른 작업을 처리하도록 할 수 있다. 주로, error 종류에 따라 다른 페이지를 띄우기 위해 사용된다. 1. 응답에 따라 처리할 로직 구현 아래 예시에서는 500 Error일 경우, 받아온 메시지를 띄우고, 404 Error인 경우 페이지가 없다는 알림을 띄우도록 했다. $.ajax({ url:'${root}/user/list', type: 'GET', contentType:'application/json;charset=utf-8', dataType:'json', success: function(data){ makeList(data); }, error: function(xhr, status, error){ ..

Programming/Spring 2022.06.09

Spring(12) - REST API2: @PathVariable 사용법

1. 경로로 변수 전달하기 parameter형식(?userid=****)이 아니라 경로(/****)로 담아서 보낸다. 수정 2. URL로 받아온 데이터 Controller에서 사용하기 URL Mapping할 때, 받아올 데이터 위치에 중괄호({ })를 넣는다. 이 값은 @PathVariable을 사용해서 뽑아내 사용할 수 있다. @GetMapping("/modify/{userid}") public String modify(@PathVariable("userid") String userId, Model model) { try { UserDto user = userService.getUser(userId); model.addAttribute("userinfo", user); } catch (Exception..

카테고리 없음 2022.06.08

Spring(12) - REST API1: JSON데이터 넘기기

지금까지 우리가 만든 DTO나 list, int 등의 데이터로 넘겼다면, 이제 이 데이터들을 JSON형식으로 넘기는 방법을 알아보자. 이는 나중에 REST API에 그대로 사용된다. 실행화면 0. JSON 데이터 사용하는 코드 주로, 비동기에서 사용한다. 페이지 전체가 아니라 비동기로 데이터만 받아올 때 자주 사용하기 때문이다. 아래는 회원 정보 list를 뿌릴 때, 회원 정보를 비동기로 받아와서 화면에 뿌리는 작업이다. 1) JSON용 회원 목록 이름 아이디 비밀번호 이메일 가입일자 2) JACKSON용 회원 목록 이름 아이디 비밀번호 이메일 가입일자 1. JSON library 추가하기 pom.xml에 버전과 library추가하기 1. properties 태그에 버전 등록 20220320 2. dep..

Programming/Spring 2022.06.08

REST API란?

1. API (Application Programming Inteface) - 정보 제공자와 정보 사용자 간의 약속(=프로토콜) - 사용자에게 필요한 "호출"과 제공자에게 필요한 "응답"으로 구성된다. - 호출과 응답에 대한 약속 - 사용자는 API를 통해 원하는 정보를 얻을 수 있다. 2. REST (Representational State Transfer) - 아키텍쳐 원칙 SET (프로토콜 아님) - URI (하나의 고유한 리소스를 대표)+ 전송방식(GET/POST/PUT/DELETE) => 원하는 작업을 지정하는 구조 - 리소스는 JSON, XML등으로 표현할 수 있다. 3. REST API - REST 아키텍처를 기반으로 한 API - HTTP 프로토콜을 이용하여 통신 : stateless (요..

CS/기타 2022.06.07

[Java] 백준 17472번 : 다리 만들기 2

1. 문제 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 2. 풀이 과정 필요한 데이터를 만들어서 푸는 MST문제이다. MST 문제 해결 방법은 Kruskal과 Prim이 있는데 정점 기준으로 데이터를 기록했기 때문에, Prim을 사용했다. 1. 섬마다 번호 붙이기 2. 섬과 섬까지 거리 구하기 가로, 세로 각각 for문 돌면서 최솟값 갱신시켜나감 3. MST 구하기 *cycle없이 다 이어진, cost가 최소인 그래프 ..

[Java] SWEA 1865번 : 동철이의 일 분배*

1. 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LuHfqDz8DFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 풀이과정 순서에 대한 순열에서 1)중간에 결과보다 작은 값이되거나 2)비트마스킹으로 불필요한 연산을 가지치기하는 것이 핵심이다. 예를 들어 N = 5일 때, 1~3까지 0~2번째 중에 하나씩 선택했다고 하면, 뒤에는 나머지는 3, 4번째 중에 선택한다. 이때 1~3까지 012, 021, 102, 120, 201, 210 순서가 가능한데, 이들 모두가 남은 것들의 최적값은 같다. 남아..

[Java] SWEA 4311번 : [연습문제] 오래된 스마트폰*

1. 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWL2vlPKMlQDFAUE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 풀이과정 *라이브러리는 Scanner외에 사용할 수 없게 되어있다. 숫자를 담을 배열은 최대 999까지 있으므로 크기를 1000으로 잡아준다. 가능한 숫자가 0, 1이라면 10, 11, 100, 110, 101, 111를 사용 가능한 숫자로 넣어줄 것이기 때문이다. 이때 10같은 경우는 2번, 100같은 경우는 3번 터치해야 하며, 이 값은 values에 기록한다. values에서 ..

[Java] 백준 1644번 : 소수의 연속합

1. 문제 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 2. 풀이 과정 소수 구하기는 에라토스테네스의 체를 사용했고, 연속된 수의 합은 dp를 활용했다. 2부터 N까지 보면서, 소수가 보이면 values배열에 더한 값을 저장한다. 예시로 N=15일 때를 생각해보면, i=2 values = [2] i=3 values = [5, 3] i=4 values = [9, 7, 4] i=5 values = [14, 12, 9, 5] i=6 values = [20, 18, 15, 11, 6] => result++; ... 15보다 큰 값은 N(15)가 될 가능성이 없으므로,..

[Java] 백준 16946번 : 벽 부수고 이동하기 4

1. 문제 https://www.acmicpc.net/problem/16946 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 www.acmicpc.net 2. 풀이과정 1. 0이 모여있는 구간마다 0의 개수를 센다. 2. 벽에서 4방향을 보면서 인접한 0의 구역에 있는 0의 개수를 더해준다. import java.io.*; import java.util.*; public class Boj16946 { static int N, M, map[][], no; static int dx[] = {-1, 0, 1, 0}, dy..