HTTP 데이터 처리 관련 및 IoC와 DI, Repository 관련 정리
·
TIL
데이터 처리 관련JSON 데이터 처리 방법1. Jackson 라이브러리 (직접적으로) 사용json 데이터 구조를 처리해 주는 라이브러리Spring 3.0 버전 이후로 Jackson 관련 라이브러리가 기본 제공(포함)됨 객체 -> json 형태 변환@Testvoid test1() throws JsonProcessingException { Star star = new Star("Robbie", 95); ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(star); System.out.println("json = " + json);}Jackson 라이브러리 내 `Objec..
[Java] 백준 11286번: 절댓값 힙
·
코딩테스트
문제 링크https://www.acmicpc.net/problem/11286분류자료 구조, 우선순위 큐문제 설명 성능 요약메모리: 23776 KB, 시간: 260 ms접근 방법처음에는 우선순위 큐 자료구조인 `PriorityQueue`를 활용해 `Comparator`만 구현해서 집어넣으면 되겠다 싶어 이 자료구조를 활용하는 방법으로 문제를 풀었다.근데 힙이라고 적혀있는 김에 힙을 직접 구현해서도 풀어보고 싶어 `최소 힙(min heap)`을 구현해서도 풀어봤다.최소 힙을 직접 구현하는 과정에는 알고리즘이 정확히 기억나지 않아 원리를 찾아보면서 구현했다....알고리즘 공부를 소홀히 하면 안될 것 같다.풀이 코드PriorityQueue 자료구조를 활용한 풀이import java.io.BufferedRead..
[Java] 백준 5525번: IOIOI
·
코딩테스트
문제 링크https://www.acmicpc.net/problem/5525분류문자열문제 설명 성능 요약메모리: 20140 KB, 시간: 280 ms접근 방법문자열의 길이인 M이 최대 1,000,000까지 주어질 수 있다는 조건이 있었기 때문에, `I`를 발견했을 때 Pn 문자열이 맞는지 또 검사를 실시하는 2중 반복문의 구조로는 시간 복잡도가 최대 O(M^2)이 나올 수 있어 시간 초과가 될 것 같다고 생각했다..그래서 최대한 문자열은 1번만 돌면서 체크하는 방식으로 구현했다.또한, Pn 문자열 내의 `O`의 개수가 N개라는 것을 활용하여 `IOI`와 같은 문자열이 나오면 `O`의 개수를 점차 증가시키고, Pn 문자열을 만족시키면 Pn 문자열의 개수(result)를 카운트하는 방식으로 작성했다.그리고 ..
[Java] 백준 1389번: 케빈 베이컨의 6단계 법칙
·
코딩테스트
문제 링크https://www.acmicpc.net/problem/1389분류그래프 이론, 그래프 탐색, 너비 우선 탐색, 최단 경로, 플로이드–워셜문제 설명케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다.예를 들면, 전혀 상관없을 것 같은 인하대학교의 이강호와 서강대학교의 민세희는 몇 단계만에 이어질 수 있을까?천민호는 이강호와 같은 학교에 다니는 사이이다. 천민호와 최백준은 Baekjoon Online Judge를 통해 알게 되었다. 최백준과 김선영은 같이 Startlink를 창업했다. 김선영과 김도현은 같은 학교 동아리 소속이다. 김도..
[Java] 백준 30804번: 과일 탕후루
·
코딩테스트
문제 링크https://www.acmicpc.net/problem/30804분류구현, 브루트포스 알고리즘, 두 포인터문제 설명은하는 긴 막대에 NN개의 과일이 꽂혀있는 과일 탕후루를 만들었습니다. 과일의 각 종류에는 11부터 99까지의 번호가 붙어있고, 앞쪽부터 차례로 S1,S2,⋯,SNS1,S2,⋯,SN번 과일이 꽂혀있습니다. 과일 탕후루를 다 만든 은하가 주문을 다시 확인해보니 과일을 두 종류 이하로 사용해달라는 요청이 있었습니다.탕후루를 다시 만들 시간이 없었던 은하는, 막대의 앞쪽과 뒤쪽에서 몇 개의 과일을 빼서 두 종류 이하의 과일만 남기기로 했습니다. 앞에서 aa개, 뒤에서 bb개의 과일을 빼면 Sa+1,Sa+2,⋯,SN−b−1,SN−bSa+1,Sa+2,⋯,SN−b−1,SN−b번 과일, 총 N..
[Java] 백준 18111번: 마인크래프트
·
코딩테스트
문제 링크https://www.acmicpc.net/problem/18111 분류구현, 브루트포스 알고리즘문제 설명팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 땅을 파거나 집을 지을 수 있는 게임이다.목재를 충분히 모은 lvalue는 집을 짓기로 하였다. 하지만 고르지 않은 땅에는 집을 지을 수 없기 때문에 땅의 높이를 모두 동일하게 만드는 ‘땅 고르기’ 작업을 해야 한다.lvalue는 세로 N, 가로 M 크기의 집터를 골랐다. 집터 맨 왼쪽 위의 좌표는 (0, 0)이다. 우리의 목적은 이 집터 내의 땅의 높이를 일정하게 바꾸는 것이다. 우리는 다음과 같은 두..
[Java] 백준 11724번: 연결 요소의 개수
·
코딩테스트
문제 링크https://www.acmicpc.net/problem/11724 분류그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색문제 설명방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.출력첫째 줄에 연결 요소의 개수를 출력한다.성능 요약메모리: 150380 KB, 시간: 668 ms접근 방법처음에는 DFS로 쭉쭉 이어서 탐색하면 되겠다~~하고 그렇게 구현했는데 실패..
[SpringBoot] @Value를 사용해 yaml 설정 파일의 값을 불러오는 방법
·
Spring
현재 버전 스펙- Spring Boot 3.2.1- Java 17- spring-boot-starter-web 의존성 사용 만일 properties 파일을 사용한다면 @PropertySource 어노테이션을 활용해 커스텀 설정 파일의 값을 불러올 수 있다고 봤었는데, properties는 개인적으로.... 가독성이 안 좋아보여 yaml 파일로 작성하려고 했다.그래서 yaml 파일의 값을 불러오는 방법을 기록하려 한다. 1. YAML 설정 파일 작성 방법우선 사용할 YAML 설정 파일의 내용이 다음과 같다고 가정하자.test: str: testtest num: 12345그러면 두 가지 방법을 통해 @Value 어노테이션으로 위 파일 내용 값을 불러올 수 있다. 1) application.yml에 내용 ..