Java 52

[Algorithm] 프로그래머스_키패드 누르기[카카오 인턴]

설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1...

Algorithm 2021.08.09

[Algorithm] 프로그래머스_체육복

설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성..

카테고리 없음 2021.08.04

[Spring] HTTP 메시지 컨버터 (HttpMessageConverter)

HTTP 메시지 컨버터 HTTP 메시지 컨버터란 기존의 뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라 HTTP API(REST API)처럼 JSON형식의 데이터 메시지바디를 직접 읽거나 쓰기 위해 메시지 본문을 다루는 방식을 말한다. 스프링 MVC는 다음의 경우에 HTTP 메시지 컨버터를 적용한다. HTTP 요청: @RequestBody , HttpEntity(RequestEntity) HTTP 응답: @ResponseBody , HttpEntity(ResponseEntity) 기존의 요청 URL 파라미터, HTML Form방식에서의 viewResolver대신 HttpMessageConverter이 동작하게 된다. 스프링 부트 기본 메시지 컨버터 (우선순위 순) 1. ByteArrayHttpMe..

Spring 2021.08.02

[Spring] 다양한 요청 매핑(Request Mapping)

다양한 요청 매핑 테스트 환경 1. 로그 출력은 시스템 콘솔 대신 slf4j 로깅 라이브러리 사용 2. view 템플릿 없이 매핑 결과만 테스트하기 위해 RestController사용하여 return값 그대로 화면에 출력 3. 모든 테스트는 Postman 플랫폼으로 테스트 기본 어노테이션 매핑 @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping(value ..

Spring 2021.08.01

[Java] 간단한 로깅(Logging) 사용 방법

SLF4J 라이브러리를 이용한 로깅 방법 로깅 라이브러리로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데스프링 부트에서 이것들을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다. * SLF4J는 인터페이스이고, Logback은 구현체이다. 더 자세한 내용은 아래의 링크를 확인* SLF4J - http://www.slf4j.org * Logback - http://logback.qos.ch 로그 선언// 1번private final Logger log = LoggerFactory.getLogger(getClass());// 2번private static final Logger log = LoggerFactory.getLogger(Xxx.class)..

Java 2021.08.01

[Java] (String, char)배열, 문자열 상호 변환 방법

1. String을 String배열로 변환하는 방법 (문자열 -> 문자열배열) .split("") 2. String배열을 String으로 변환하는 방법 (문자열배열 -> 문자열) Arrays.toString( ) 3. String을 char배열로 변환하는 방법 (문자열 -> 문자배열) .toCharArray( ) 4. char배열을 String으로 변환하는 방법 (문자배열 -> 문자열) String.valueOf( ) new String( ) 테스트 입력 import java.util.Arrays; public class Main{ public static void main(String[] args) { // 테스트 문자열 String str = "ABCDEFG"; // 1. String -> Strin..

Java 2021.07.31

[Algorithm] 원더랜드_프림 알고리즘(최소스패닝트리)

스패닝 트리란 회로가 존재하지 않도록 그래프의 모든정점을 연결하는 트리이다. * 회로가 존재한다. == 사이클이 발생한다. == 출발점에서 시작해서 출발점으로 돌아온다. == 그래프 * 아래의 문제 이미지에서 왼쪽 이미지=그래프 / 오른쪽 이미지=트리 최소 스패닝 트리(MST)는 스패닝 트리를 구성하는 간선들의 가중치의 합이 최소가 되는 트리를 뜻한다. 이번 최소 스패닝 트리 문제는 프림 알고리즘, PriorityQueue을 이용하여 해결 할 것이다. 설명 원더랜드에 문제가 생겼다. 원더랜드의 각 도로를 유지보수하는 재정이 바닥난 것이다. 원더랜드는 모든 도시를 서로 연결하면서 최소의 유지비용이 들도록 도로를 선택하고 나머지 도로는 폐쇄하려고 한다. 아래의 그림은 그 한 예를 설명하는 그림이다. 위의 지..

Algorithm 2021.07.30

[Algorithm] 원더랜드_크루스칼 알고리즘(최소스패닝트리)

스패닝 트리란 회로가 존재하지 않도록 그래프의 모든정점을 연결하는 트리이다. * 회로가 존재한다. == 사이클이 발생한다. == 출발점에서 시작해서 출발점으로 돌아온다. == 그래프 * 아래의 문제 이미지에서 왼쪽 이미지=그래프 / 오른쪽 이미지=트리 최소 스패닝 트리(MST)는 스패닝 트리를 구성하는 간선들의 가중치의 합이 최소가 되는 트리를 뜻한다. 이번 최소 스패닝 트리 문제는 크루스칼 알고리즘,Union&Find DisjointSet을 이용하여 해결 할 것이다. 설명 원더랜드에 문제가 생겼다. 원더랜드의 각 도로를 유지보수하는 재정이 바닥난 것이다. 원더랜드는 모든 도시를 서로 연결하면서 최소의 유지비용이 들도록 도로를 선택하고 나머지 도로는 폐쇄하려고 한다. 아래의 그림은 그 한 예를 설명하는 ..

Algorithm 2021.07.26

[HTTP] 데이터 요청 - HTTP API(REST API)

HTTP API(REST API) HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다. 먼저 1. 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고 읽어 본 후 2. JSON 형식으로 전송하고 읽어 보자. 1. 단순 TEXT 전송 @WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string") public class RequestBodyStringServlet extends HttpServl..

HTTP 2021.07.26