이번 방학에 멘토링을 통해 스프링을 배우게 시작하였다. 처음 배우다 보니 아직 어려운 부분이 있는다는 생각을 하였다. 따라서 복습 및 개인 공부를 위해 기록하기로 하였다. CRUD는 Create, Read, Update, Delete의 약자이다. 이번에 매우 간단하게 CRUD 게시판 틀을 만들어봤다. 가장 중요한 파일 구조 및 JPA Reposioty - JPA를 이용해서 데이터베이스의 데이터를 가져온다. Entity - JPA를 이용해서 테이블 생성 및, 데이터를 다룰 수 있다. Service - 기능 구현 담당, Repository를 불러와서 기능을 구현하거나, 데이터를 저장한다 Controller - 클라이언트와 직접적으로 통신하며, Service를 불러서 기능 구현을 명령한다. 클라이언..
https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 백준 2004번 조합 0의 개수 문제 링크입니다. 핵심 2와 5개가 짝을 이루어 곱해질 때마다 끝자리에 0이 1개 추가된다. 2와 5의 개수가 다르게 나올 수 있기 때문에, 둘 중 적게 나온 수만큼 0이 추가된다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publ..
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준 15650번 N과 M(2) 문제 링크입니다. 핵심 https://kimtaesoo99.tistory.com/17 [백준]15649번 N과 M(1) (java) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해..
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준 15649번 N과 M(1) 문제 링크입니다. 핵심 이 문제는 백트래킹을 사용하여서 풀어야 한다. 재귀 호출을 통해 푸는 방식이다. https://namu.wiki/w/%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9 백트래킹 - 나무위키 일반적으로 특정 퀘스트나 스토리를 클리어하기 위해 게임을 진행한 뒤, 자동으로 초기 지점으로 돌아오는 기능 등이 없어 왔던 길을 플레이어가..
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 백준 1002번 터렛 문제 링크입니다. 핵심 이 문제는 해석하면, 두 원의 접점의 개수를 찾는 것이다. 가장 먼저 개수가 무한대일 경우는 두 원의 중심이 같고, 반지름이 같은 경우이다. 그다음 접점이 없는 경우인데, 이는 아래와 같은 그림일 때이다. 이는 다른 원이 내부에 있을 때인데, 식으로 나타내면 (x1-x2)^2+(y1-y2)^2(r1-r2)^2이다. 다음은 접점이 한 개일 때이다. 내접한다는 의미이고, 식은 (x1-x2)^2+(y1-y2)^..
https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 백준 2477번 참외밭 문제 링크입니다. 핵심 반드시 육각형이고, 시계 반대방향으로 돌아간다. 우리는 가장 큰 가로변과 세로 변을 구하여 가장 바깥쪽의 직사각형을 구하고 그 직사각형에서 작은 직사각형이 잘린 크기를 구할 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Sc..
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 백준 7568번 덩치 문제 링크입니다. 핵심 우선 입력 값은 5 55 185 58 183 88 186 60 175 46 155 이다. 출력은 2 2 1 2 5이다. 이는 키와 몸무게가 다른 사람에 비해 크면 더 덩치가 크고 키나 몸무게 둘 중 1가지만 크면 같은 덩치이고, 둘 다 작으면 덩치가 더 작은 것이다. 이문제는 브루트 포스에 분류된 것처럼 반복해서 비교하는 것이다. 정답 코드..
https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 백준 2981번 검문 문제 링크입니다. 핵심 여러 수를 받고 그 수들을 나누었을 때, 나머지가 같은 값이 나오게 하는 수를 찾는 것이다. 단순한 방법으로는 2부터 1씩 증가시키면서 값을 나누었을 때, 나머지를 비교하는 것이지만, 이러한 방법은 시간 초과가 뜨게 된다. 따라서 우리는 유클리드 호제법을 사용하여 문제를 풀어야 한다. https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 백준 10816번 숫자 카드 2 문제 링크입니다. 핵심 이 문제는 처음 제시된 숫자 중에서 아래 제시된 숫자가 몇 번 나왔는지를 체크하는 것이다. 핵심은 HashMap을 사용하는 것이다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 백준 10815번 숫자 카드 문제 링크입니다. 핵심 처음 입력된 숫자 중에서 상근이가 가지고 있는 숫자가 있으면 1 아니면 0을 출력하는 것이다. 처음에는 contains를 사용하여, 포함 여부를 확인해보았는데, 이는 시간이 너무 오래 걸려서 시간 초과가 떴다. 이문제는 binarySearch를 사용하는 것이 핵심이다. 정답 코드 import java.io.*; im..