인기 글
목록
@Enumerated 보다 @Convert 가 권장되는 이유 + 예제코드
- Spring2024.10.25 00:32@Enumerated 보다 @Convert 가 권장되는 이유 + 예제코드

용어정리Enum Class열거형(Enum)을 정의하는 데 사용되며, 고정된 상수들의 집합이다특별한 데이터 타입이고 특정 값들만 가질 수 있는 변수를 정의할 때 사용된다@EnumeratedEntity 필드의 Enum타입을 DB에 어떻게 매핑할 것인지 정해주는 어노테이션@ConvertEntity의 필드타입을 변환하여 DB에 저장하거나 DB에서 읽어 올 때 변환 작업을 지정하는 어노테이션임커스텀 컨버터 로직을 직접 작성해서 사용한다. @Enumerated 보다 @Convert가 권장되는 이유는?먼저 @Enumerated의 속성을 알아야 한다. 1. EnumType.ORDINAL2.EnumType.STRING 이렇게 총 두 가지인데 사실 EnumType.ORDINAL을 사용하는 건 서비스의 안정성을 매우 저하시..

DTO, DAO가 무엇일까? with 사용하는 이유
- Spring2024.09.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)
- Baekjoon2024.08.14 16:46[BOJ] 백준 16985 Maaaaaaaaaze (JAVA)

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

SSAFY 12th 합격 후 다짐
- SSAFY2024.07.15 02:03SSAFY 12th 합격 후 다짐

사실 SSAFY 12기에 합격하고 입과 해서 2주 정도 지났다.사피 합격하면 이것저것(합격후기, 머.. 등등)을 올리려고 했으나고등학교 이후 9 to 6을 오랜만에 해본 나는 집에 오면 쓰러지기 일쑤였다.. 사실 지금도 매우 피곤하지만 ( 알고리즘 문제는 매일 풉니다 ㅎㅎ) 스타트캠프도 끝났으니이번 SSAFY 12기에서 내가 이루고 싶은 것, 내가 얻어가고 싶은 것 을간단하게 정리해 보는 게 앞으로 1년간 큰 도움이 될 것 같다 1. 무엇을 배우고 싶어?1. Spring Framework백엔드 개발자가 목표면서 가장 배우고 싶은 지식은 대규모 트래픽을 수용하는 기술을 배우고 싶었다.사실 현업이 아닌 부트캠프 + 학업 수준에서 대규모 트래픽을 감당하는 프로젝트를 하기 힘들 뿐만 아니라조언을 구하기도 쉽지 ..

[BOJ] 백준 20157 화살을 쏘자! (JAVA)
- Baekjoon2024.07.07 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)
- Baekjoon2024.07.07 04:45[BOJ] 백준 17472 다리 만들기 2 (JAVA)

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

BOJ
[BOJ] 백준 11724 연결 요소의 개수 (JAVA)
[BOJ] 백준 11724 연결 요소의 개수 (JAVA)
- Baekjoon
2023.12.14 22:12
📑 문제 본문에서 "방향 없는 그래프가 주어졌을 때" 라는 말은 곧 양방향이다!즉 A -> B , B -> A 가 성립해야 한다. "연결 요소"에 대해 설명하기 위해 테스트 케이스를 두 가지를 가져와 봤다.1. 본문 예제 입력 1 위 사진은 본문에서 입력된 정점과 간선들의 그래프이다.왼쪽 집합 (1,2,5) 와 오른쪽 집합 (3,4,6)은 연결할 수 있는 간선이 없다 즉 "연결 요소의 개수는" 2 가 되는 것이다! 2. TestCase : 4 0이 경우는 노드는 4개이고 간선은 0이다 그렇다면 연결 요소의 개수는 몇일까?답은 4 이다. 간선이 없는 노드는 하나의 연결요소이다. 이점만 생각하고 구현한다면 쉽게 풀 수 있을 것이다. 🌱 코드 및 풀이ArrayList를 이용하여 인접리스트를 만들고 양방향임..
[BOJ] 백준 14502 연구소 (JAVA)
[BOJ] 백준 14502 연구소 (JAVA)
- Baekjoon
2023.12.13 23:48
📑 문제  🌱 아이디어지도의 크기 (3 ≤ N, M ≤ 8), 입력되는 값이 적다! = 완탐 가능하다.지도의 최대 크기가 8*8 = 64 이다. 완전탐색 으로 풀 수 있다는 뜻이다,즉 지도에 벽을 3개를 모든 경우만큼 다 세운 후 가장 많은 안전구역의 크기를 구하면 된다!DFS, BFS 둘 다 사용해서 풀 수 있다DFS = 벽 세우기, BFS = 바이러스 퍼트리기 이렇게 역할을 나눠서 구현할 수 있다. 🌱 코드 및 풀이 엄청 길다;;; 하지만 각 기능을 함수로 나눠서 설명을 달아 놨으니 천천히 보신다면 이해하기엔 어려움이 없을 것이다아마도 이해가 안 된다면 댓글 달아주시면 최대한 설명해 보겠습니다.그래도 간단히 설명을 하자면 dfs() -> 지도에 벽을 3개를 세운다bfs() -> 바이러스를 전염시..
[BOJ] 백준 25206 너의 평점은 (JAVA)
[BOJ] 백준 25206 너의 평점은 (JAVA)
- Baekjoon
2023.12.11 19:18
📑 문제🌱 아이디어평균학점을 구하는 공식만 안다면 전혀 어렵지 않은 문제이다. 하지만 위 지문을  잘 못 읽어서 "P", " F" 둘 다 제외하는 것으로 이해하고 말아 버렸다. 다음엔 또박또박 읽자. 요약하면 "F" 점수까지 계산 해줘야 한다.평균학점 = (과목평점*과목이수학점 +....)/총 이수학점 = 전공평점평균학점을 구하는 공식과 HashMap을 이용할 안다면 전혀 어렵지 않은 문제이다(성능도 높힐 수 있다.)  🌱 코드 및 풀이HashMap에 등급별 과목점수를 모두 저장한다. grade [i]. equals("P") key값이 "P"인 경우는 제외하고 file.get(grade [i])* num [i]에서 과목 평점을 계산합니다. 만약 sum == 0이라면 모든 과목이 "P" 등급이기 때문..
[BOJ] 백준 1052 물병 (JAVA)
[BOJ] 백준 1052 물병 (JAVA)
- Baekjoon
2023.12.10 21:03
📑 문제🌱 아이디어N = 3, K = 1이라면 물병을 K개 이하로 만들어야 할 때 2L 물병 = 1개, 1L 물병 = 1개로 합 칠 수 있다. 하지만 아직 물병이 총 2개 이기 때문에 K개 이하로 만들기 위해 1L 물병 1개를 사서 2L 물병 = 2개 -> 4L 물병 = 1개로 만들어 조건 성립 시킨다.결국 같은 물량을 두 개씩 합친다 그렇다면 1L -> 2L -> 4L -> 8L로 물의 양이 정해진다이러한 규칙은 곧 이진수와 같다 그렇다면 비트마스킹으로 풀 수 있을 것이다! N = 3, K = 1 특히 N = 3을 이진수로 나타내면 11 이다. '1'의 개수가 K개 이하 여야 하기 때문에 N = 4를 이진수로 나타내면 100 이다 그러므로 4 - 3 = 1 즉 1개만 물병을 추가하면 된다. 🌱 코..
SWEA
[SWEA-1206] : [S/W 문제해결 기본] 1일차 - View (JAVA)
[SWEA-1206] : [S/W 문제해결 기본] 1일차 - View (JAVA)
- SWEA
2023.10.29 22:20
D3 [S/W 문제해결 기본] - View를 JAVA로 풀어보자! SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Solution import java.util.*; import java.io.*; import java.lang.*; public class Solution { public static void algorithm(int[] arr1) { // 구현 int cnt =0; for(int i=2; i < arr1.length-2; i++ ) { // 처음2칸 마지막2칸 제외 //현재 자리기준 양 옆 2칸 check에 담기 int[] check = {arr1[i-2],arr1[i-1],arr1[i+1],..
반응형
image