DTO, DAO가 무엇일까? with 사용하는 이유
Back-end/- Spring2024. 9. 23. 02:34DTO, DAO가 무엇일까? with 사용하는 이유

DTO - Data Transfer ObjectDB의 데이터를 담고 전송하는 데 사용되는 객체이며 로직을 포함하지 않는 순수한 데이터만 담는 객체임 DTO 장점1. 어떤 데이터를 전송하고, 담는지 명확하기 때문에 복잡하고 큰 프로젝트에서 식별하는데 용이함 2. 클라이언트 요구사항이 변경되어도 DTO만 수정하면 되므로 서비스 로직, DB계층(Entity)에 변경 없이 대응가능함 DAO - Data Access ObjectDB에 접근하는 객체이며 주로 CRUD 작업을 처리한다DAO는 DB와 상호작용하며 비즈니스로직과 DB사이를 이어주는 징검다리 역할을 한다. DAO 장점1. 일관된 interface를 제공하여 재사용이 용이하고, 확장이나 변경에 유리하다.2. 서비스 로직과 DB 접근 로직을 분리하여 결합도를..

[BOJ] 백준 16985 Maaaaaaaaaze (JAVA)
Algorithm/- Baekjoon2024. 8. 14. 16:46[BOJ] 백준 16985 Maaaaaaaaaze (JAVA)

📑 문제🌱 아이디어순열과 중복순열을 3차원 배열을 컨트롤해 보자! 문제를 접하고 나서, 3차원 배열의 미로 찾기는 이미 몇 번 해보았기 때문에 어렵지 않았다.가장 고민했던 점은 어떻게 최적의 3차원 미로를 만드냐였다... 그래서 순열과 중복순열로 배열을 컨트롤할 수 있는 파라미터를 만드려고 했다 중복순열은 배열 한 층을 90도, 180도,  270도를 핸들링할 때 사용했고당연하게도 인덱스가 겹치면 안 되기 때문에 순열은 3차원 배열의 층을 조립할 때 사용했다 순열, 중복순열을 구하고 배열을 핸들링해도 시간초과가 나지 않는다고 확신하고 구현했다. 먼저 중복 순열, 순열 구하고2중 for문으로 각각의 각도에서 배열의 층을 쌓는 방식으로 모든 3차원 배열의 경우의 수를 체크했다.만든 큐브마다 BFS로 미로..

[BOJ] 백준 20157 화살을 쏘자! (JAVA)
Algorithm/- Baekjoon2024. 7. 7. 15:11[BOJ] 백준 20157 화살을 쏘자! (JAVA)

📑 문제🌱 아이디어좌표 (0,0)과 (x, y)의 기울기를 구하고, 기울기가 같은 풍선을 세어보자 풍선의 개수는  N 대충 봐도 모든 좌표를 탐색하는 건 불가능해 보인다    문제에서는 0,0에서 화살을 날려 -> (x, y) 풍선을 맞춰 터트릴 수 있다고 한다. 최대한 많은 풍선을 터트리려면 어떻게 해야 할까? 0,0 -> 1,2로 화살을 쐈다면 자연스럽게 화살의 이동 방향에 존재하는 풍선들은 터질 것이다. 이것을 그림으로 그려보면 위 처럼 된다.즉 풍선 A -> 풍선 B를 잇는 직선의 기울기를 구하고, 같은 기울기에 속한 풍선의 개수를 세면 된다! 기울기 M을 구하는 공식은 M = (y2-y1) /( x2-x1)이다, 그 후 기약분수로 표현하기 위해 최대공약수 도 구해서 나눠주면 된다 🌱 코드 ..

[BOJ] 백준 17472 다리 만들기 2 (JAVA)
Algorithm/- Baekjoon2024. 7. 7. 04:45[BOJ] 백준 17472 다리 만들기 2 (JAVA)

📑 문제 🌱 아이디어BFS로 각 섬에 번호를 부여하고, 모든 섬을 연결하는 다리잇기(MST)로 구현하자 2차원 평면 상 섬과 바다가 입력으로 주어지고, 다리를 연결해서 모든 섬을 연결하려고 한다.다리는 가장 짧게 연결해야 한다. 즉 모든 섬을 최소비용으로 모두 잇는다면 = 최소스패닝임을 유추해야 풀 수 있다. 아래와 같은 3단계를 거쳐서 구현했다. 1. 모든 섬을 탐색하고 번호를 부여한다 그래야 A -> B를 특정할 수 있다.2. A -> B가 직선으로 장애물 없이 다리를 이을 수 있는지 판단 후 우선순위큐에 시작노드, 목표노드, 비용을 입력하기3. 크루스칼알고리즘으로 모든 섬을 잇기 맵의 크기, 섬의 개수가 매우 작다, 시간초과를 걱정하는 것보다 차근차근 구현에 집중하는 게 좋은 문제인 것 같다!?..

[BOJ] 백준 11376 열혈강호 2 (JAVA)
Algorithm/- Baekjoon2024. 6. 28. 00:24[BOJ] 백준 11376 열혈강호 2 (JAVA)

📑 문제🌱 아이디어이분매칭의 아주 살짝 응용 버전?, 이분매칭의 특징을 알면 풀 수 있다. 아마 기본 열혈강호 문제를 풀고 이 문제를 푸는 사람이 많을 것 같다. 기본적인 네트워크 플로우, 이분매칭은 1 대 1 매칭이 디폴트이지만 이 문제에서는 1 대 2 매칭까지 가능하다.즉 사람 한 명이 두 가지 일을 할 수 있다. 가장 처음 사람마다 몇 개의 일을 점유했는지 카운트하는 배열을 생성하고 관리하려 했지만 실패했다. 하지만 이분매칭의 메커니즘을 자세히 보게 되면이분매칭 시 한 사람에 대해 한번만 dfs 함수를 호출하는데 => 1 : 1 매칭, 사실 dfs호출을 여러 번 하는 만큼 1 대 N 매칭을 할 수 있다. 🌱 코드 및 풀이 answer 🌱 느낀 점 기본 DFS 이용한 이분매칭은 시간이 오래 걸..

반응형
image