전체 글 273

백준 14943번 : 벼룩 시장 [자바]

🧫 문제 분석 ✔️ 출처벼룩 시장 골드 3 📖 문제 두사람의 거리 * 배달하는 벼룩의 수 의 합을 구하고, 그 중 최소가 되는 합을 구하는 그리디 문제제일 좋은 것은 가장 가까운 곳에 배달하는게 이득이다.따라서 판매자 즉, 가게와 고객을 따로 순서대로 받고 하나하나씩 거래하면된다. 투포인터로 풀었다. 🔅 문제 풀이import java.io.*;import java.util.*;public class Main { // 계산은 long public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

baekjoon/Greedy 2025.07.03

Docker 기본 개념

docker는 컨테이너를 사용하여 각 프로그램을 독립된 환경에서 실행 및 관리하는 툴docker는 이식성이 매우 좋다. 컨테이너 : 미니 컴퓨터 개념 (독립된 환경)이미지 : 게임 칩 , 프로그램 실행시 필요한 설치과정, 설정, 버전 정보 등 모든 것을 포함 docker의 이미지는 docker hub에서 다운받는 것이다. 포트호스트 포트와 컨테이너 포트가 구분되는데호스트 컴퓨터 안에 컨테이너가 있기에 외부에서 컨테이너로 접근 불가 따라서 호스트에서 포트포워딩으로 컨테이너를 매핑해준다. 볼륨볼륨은 설정 파일등을 영속화한다. 절대경로로 지정하며, 웬만하면 빈 폴더 혹은 폴더를 삭제하고 지정 호스트와 컨테이너 볼륨이 서로 동기화하기에한쪽이 없으면 한쪽에서 가져온다. 볼륨으로 인한 설정 정보 유지때문에 비밀..

Back-End 2025.07.02

정렬 방식 실렬 방식 실습

3가지 정렬 방식인덱스 사용조인의 드라이빙 테이블만 정렬임시 테이블 사용 후 정렬 3가지가 실제로 어떻게 적용되는지 궁금해서 직접 구현해봤다. CREATE TABLE tb_test1 ( col1 int NOT NULL, col2 int DEFAULT NULL, PRIMARY KEY (col1), INDEX ix_col1_col2 (col1,col2), INDEX ix_col2 (col2)) ENGINE=InnoDB CREATE TABLE tb_test2 ( col1 int DEFAULT NULL, col2 int DEFAULT NULL, INDEX ix_col1_col2 (col1,col2)) ENGINE=InnoDB303p 의 퀴리문을보고 테이블을 만들었다. 해당 쿼리로 테스트 한다. ..

Back-End/DB 2025.07.01

백준 16565번 : N포커 [자바]

🧫 문제 분석 ✔️ 출처N포커 골드 2 📖 문제 포함 배제 원리에 대해 배우게 되었다. 말그대로 여러 집합을 합칠때 중복을 빼는 것이다. 짝수 집합일 경우 빼주고홀수 집합일 경우 더한다.세 집합 A,B,CA, B, CA,B,C 면:→ 더하고 빼고 반복. 벤다이어그램으로 봤을때2번째 짝수번째 빼기를 보면3번 빼서 AnBnC가 없어진다따라서 세 집합의 교집합을 더한다. 최종적으로 중복ㅇ벗는 하나의 영역만 계산된다.|B| + |C| + |D| 이경우 BnC가 2개AnB 2개AnC 2개 때문에 1개씩 빼줌 하지만 이러면 AnBnC가 사라짐AnBnC 더함 최종적으로 중복없는 합 집합 생성 🔅 문제 풀이import java.io.*;import java.sql.SQLOutput;import java.uti..

baekjoon/DP 2025.07.01

테스트에서 영속화

스프링에서 테스트 코드 작성 중 엔티티의 영속화를 유지할 필요가 있다면@Transactional이 아닌TransactionTemplate를 사용해볼 수 있다.테스트 코드에서 @Transactional은 테스트 시작시 열리고 테스트가 끝나면 롤백된다. @AfterEach@Transactionalvoid delete() { Member member = memberRepository.findBySocialId(SocialType.KAKAO, "2gjdkl12333").get(); log.info("해당 id 삭제 ={}", member.getId()); memberRepository.deleteMember(member); }위 코드가 실행되면 member는 비영속화상태이기에 실패한다.Remov..

Back-End/Spring 2025.06.30

백준 14725번 : 개미굴 [자바]

🧫 문제 분석 ✔️ 출처개미 골드 3 📖 문제 트리로 풀어야하는데 Set이랑 문자열로 풀었다. 레벨 별 Set을 만들고 Set에 현재 레벨의 문자열을 체크하면서 추가한다. Tree 를 이용한 풀이를 꺼렸던게 정렬때문이였는데 생각해보니 TreeMap이 있었다.노드 만들어서 자식을 TreeMap에 넣고 진행하면 될 것 같다. 🔅 문제 풀이 [Set 풀이]import java.io.*;import java.util.*;public class Main { static final int MAX_LEVEL = 15; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..

baekjoon/String 2025.06.28

Real MySQL 8.0 [데이터 처리 방식 및 정렬]

쿼리 실행 절차1. 사용자로부터 요청된 SQL 문장을 잘 게쪼개서 MYSQL 서버가 이해할 수 있는 수준으로 분리(파스 트리)한다. 2. SQL의 파싱 정보(파스 트리)를 확인하면서 어떤 테이블부터 읽고 어떤 인덱스를 이용해 테이블을 읽을 지 선택 3. 두번째 단계에서 결정된 테이블의 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져옴 1단계가 SQL 파서 모듈이 처리하는 SQL 파싱SQL 문법적 체크 옵티마이저는 비용 기반 최적화와 규칙 기반 최적화가 있으며현재는 비용 기반 최적화를 사용 기본 데이터 처리풀 테이블 스캔과 풀인덱스 스캔 풀 스캔은 특정 테이블의 연속된 데이터 페이지 읽으면 백그라운드 스레드에 의해 리드 어헤드 작업이 자동으로 시작리드 어헤드 : 어떤 영역의 데이터가..

Back-End/DB 2025.06.27

백준 2533번 : 사회망 서비스 (SNS) [자바]

🧫 문제 분석 ✔️ 출처사회망 서비스 (SNS) 골드 3 📖 문제 DP 문제트리를 이용한 DP 문제는 처음이라 좀 어려웠다 처음에는 엣지가 많은 노드 순으로 연결 해제 여부를 따지며 선정하면 되지않나 싶었는데불가능한 케이스가 있어서 바꿨다. 현재 노드를 얼리 아답터로 선정할지 안할지에 대해서 탐색하면된다.DFS+DP 식으로 풀어서 별로일 수 있다. 또한 입력을 받을 때 주의해야한다.방향성을 가지면 안되며 양방향으로 트리를 만들어야한다.그 이유는 단방향시 루트를 가지는 트리가 되는데 이러면 방향에 따라 값이 달라진다. 51 52 12 32 4이런 입력이 들어오면 1을 루트로 설정시2를 탐색할 수 없다. 때문에 양방향으로 설정해야한다. 루트를 1 기준으로 입력이 들어온다는 생각때문에이런 실수를 했다...

baekjoon/DP 2025.06.27

백준 9328번 : 열쇠 [자바]

🧫 문제 분석 ✔️ 출처열쇠 골드 1 📖 문제 BFS 탐색 + 구현 상근이가 빈 공간을 다니면서 문서를 훔친다.열쇠는 줍고 열쇠가 있는 문이라면 연다. 처음풀이시도에서는열쇠를 얻자마자 해당하는 문에 이동하고그 문의 상하좌우를 탐색해서 한번이라도 방문한 빈 공간이 있다면 이 문은 이동 가능한 문으로 판단하여 탐색했는데 이 풀이의 문제점은 문의 상하좌우의 빈 공간이 방문이 가능함에도 열쇠를 얻은 시점이 더 빨라서 해당 열쇠가 있음에도 이동 할 수 없는 문이라 판단하여 열지 않는다. 따라서 우선 빈 공간을 먼저 다 탐색하면서갖고 있는 열쇠가 있다면 문을 열고 열 수 없는 문은 따로 저장해두고새로운 열쇠는 추가한다. 기존에 갖고 있는 열쇠로 다 탐색을 끝냈다면추가된 키로 열 수 있는 문이 있는지 확..