분류 전체보기

    [BOJ/JAVA] 2343번: 기타 레슨

    키워드블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다.M개의 블루레이에 모든 기타 강의 동영상을 녹화하블루레이의 크기(녹화 가능한 길이)를 최소M개의 블루레이는 모두 같은 크기구현블루레이 크기를 매개변수로하여 이분 탐색을 진행한다.lectures[]강의의 누적합low = 가장 긴 길이의 강의high = 모든 강의 길이의 합canMake()mid = (low+high)/2 의 블루레이 크기로 녹화할 수 있는지 체크0부터 누적합을 계산하며 진행한다. mid보다 커지는 순간 → 현재 인덱스의 강의를 제외한 이전 강의를 현재 블루레이에 담는다.마지막 인덱스가 아닌데, 블루레이의 수가 M이상이라면 .. false 반환반복문이 끝난 경우 → 디스크가 남는 경우디스크의 크기는 항상 한 개의 강의를 넣을만큼 충분..

    [BOJ/JAVA] 23631번: 진심 좌우 반복뛰기

    키워드위치 x = 0에서 시작하여, 처음에는 오른쪽으로 Km를 뛴 다음 방향을 바꾼다.방향을 바꿀 때마다 이전에 움직인 거리에 Km만큼 더한 거리를 뛰고, 다시 방향을 바꾼다.정확히 (N - 1)m만 뛸 것구현다음을 정의하자. 전부 뛴다 → 해당 뛰여야할 길이만큼을 전부 뛴다.n전부 뛴 횟수전부 뛸 수 있는 n값을 구한다.low = 0high = 5000(5000)(5000+1)/2 ≥ 10,000,000 이므로 5000을 상한선으로 정했다.n을 매개변수로 하여, 이분 탐색으로 진행한다.숫자가 매우 크므로, java에서는 BigInteger를 활용한다.n번째에서 전부 뛰었을 때 위치는 다음과 같다.이동 횟수좌표1K2-K32K4-2K53K6-4K위 표에서 알 수 있듯이 이동횟수를 보면, 좌표를 알아낼 수 ..

    문자열 합치기

    도입JAVA에서 문자열을 합치는 방법에는 여러가지가 있다.각 방법에 대해 시간을 비교해보자.공통 테스트용 문자열다음 문자열을 계속해서 연결할 것이다.final static String test = "test";+연산자 // + 연산자를 이용한 문자열 합치기 public static void plusOperation(int loop) { String result = ""; long startTime = System.currentTimeMillis(); for (int i = 0; i < loop; i++) { result += test; } long endTime = System.currentTimeMillis(); System.out.println("plusOperation::걸린 시간" + (endTi..

    Swagger를 활용한 REST API 명세 문서화

    💡API가 어떤 로직을 수행하고, 어떤 데이터를 받아 어떤 형식으로 반환하는지 정리해준다.의존성 추가하기pom.xml 에 다음 의존성을 추가한다. io.springfox springfox-boot-starter 3.0.0 의존성 추가 결과는 다음과 같다.Swagger 관련 설정 코드 작성com.springboot.api.config.SwaggerConfiguration.java를 생성한다.package com.springboot.api.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web...

    PUT/DELETE API 만들기

    PUT API💡POST API와 유사하나, 보통 DB 리소스 값을 업데이트하는데 사용클래스 생성package com.springboot.api.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/v1/put-api") public class PutController { }@RequestBody를 활용한 PUT 메서드 구현POST와 마찬가지로 데이터의 형태가 정해져 있는경우, 그렇지 않은 경우 2가지로 나눈다.데이터의 형태가 정해져 있지 않은 경우..

    POST API 만들기

    POST API💡저장하고자 하는 리소스나 값을 body에 담아서 서버에 전달하는 방식body는 보통 JSON 형식으로 주고받는다. (XML도 있긴하다.)공통 URL 생성하기package com.springboot.api.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/v1/post-api") public class PostController { }@RequestBody를 활용한 POST 메서드 구현2가지 방식으로 구현한다.어떤 형태로 값이 들..

    동적 계획법

    동적 계획법이 뭔데?분할 정복에서 중복 부분문제를 캐시(cache)를 이용하여 계산 결과를 재활용하여 속도 향상을 꾀하는 기법이다.예시피보나치 수열의 [i]번째 결과값을 출력하고싶다고 하자.해당 메소드는 fibo(i)를 이용하여 값을 얻는다.int fibo(int i){ // 기저사례 if(i == 0 || i == 1){ return 1; } if(cache[i] != -1){ return cache[i]; } cache[i] = fibo(i-1) + fibo(i-2); return cache[i]; }초기 cache 상태는 다음과 같다.fibo(4)는 fibo(3) + fibo(2) 연산이 이루어진다.fibo(3)에서는 fibo(2) + fibo(1) 연산이 이루어진다.fibo(2)에서는 fibo(1..

    GET API 만들기

    다음처럼 Controller 패키지에 GetController를 생성한다.package com.springboot.api.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/v1/get-api") public class GetController { }매개변수가 없는 GET 메서드 구현GetController내에 @GetMapping(”/name”) Annotation을 사용하여 메서드를 생성한다.추후에는 메서드 형식에 맞게 다음처럼 Annotat..

    프로젝트 생성하기

    다음 사이트에 접속한다.Spring InitializrInitializr generates spring boot project with just what you need to start quickly!https://start.spring.io/ 위와같이 설정한 후 GENERATE를 눌러 프로젝트를 생성한다. 위와 같이 com.springboot.hello에 Controller 패키지를 생성한다.이후 HelloController 클래스를 작성한다.package com.springboot.hello.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotat..

    Talend API Tester를 통해 동작 테스트를 해보자

    크롬 확장 프로그램을 이용하여 API를 테스트해보자. 다음 사이트로 들어가 확장 프로그램을 설치한다.Talend API Tester - Free EditionVisually interact with REST, SOAP and HTTP APIs.https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm?hl=ko이후 크롬 브라우저에서 해당 확장 프로그램을 실행한다.URI 위치에 테스트용 API, 다음을 입력한다.https://jsonplaceholder.typicode.com/todos/1결과를 확인한다. Uploaded by N2T