용어정리Enum Class열거형(Enum)을 정의하는 데 사용되며, 고정된 상수들의 집합이다특별한 데이터 타입이고 특정 값들만 가질 수 있는 변수를 정의할 때 사용된다@EnumeratedEntity 필드의 Enum타입을 DB에 어떻게 매핑할 것인지 정해주는 어노테이션@ConvertEntity의 필드타입을 변환하여 DB에 저장하거나 DB에서 읽어 올 때 변환 작업을 지정하는 어노테이션임커스텀 컨버터 로직을 직접 작성해서 사용한다. @Enumerated 보다 @Convert가 권장되는 이유는?먼저 @Enumerated의 속성을 알아야 한다. 1. EnumType.ORDINAL2.EnumType.STRING 이렇게 총 두 가지인데 사실 EnumType.ORDINAL을 사용하는 건 서비스의 안정성을 매우 저하시..
DTO - Data Transfer ObjectDB의 데이터를 담고 전송하는 데 사용되는 객체이며 로직을 포함하지 않는 순수한 데이터만 담는 객체임 DTO 장점1. 어떤 데이터를 전송하고, 담는지 명확하기 때문에 복잡하고 큰 프로젝트에서 식별하는데 용이함 2. 클라이언트 요구사항이 변경되어도 DTO만 수정하면 되므로 서비스 로직, DB계층(Entity)에 변경 없이 대응가능함 DAO - Data Access ObjectDB에 접근하는 객체이며 주로 CRUD 작업을 처리한다DAO는 DB와 상호작용하며 비즈니스로직과 DB사이를 이어주는 징검다리 역할을 한다. DAO 장점1. 일관된 interface를 제공하여 재사용이 용이하고, 확장이나 변경에 유리하다.2. 서비스 로직과 DB 접근 로직을 분리하여 결합도를..
📑 문제🌱 아이디어순열과 중복순열을 3차원 배열을 컨트롤해 보자! 문제를 접하고 나서, 3차원 배열의 미로 찾기는 이미 몇 번 해보았기 때문에 어렵지 않았다.가장 고민했던 점은 어떻게 최적의 3차원 미로를 만드냐였다... 그래서 순열과 중복순열로 배열을 컨트롤할 수 있는 파라미터를 만드려고 했다 중복순열은 배열 한 층을 90도, 180도, 270도를 핸들링할 때 사용했고당연하게도 인덱스가 겹치면 안 되기 때문에 순열은 3차원 배열의 층을 조립할 때 사용했다 순열, 중복순열을 구하고 배열을 핸들링해도 시간초과가 나지 않는다고 확신하고 구현했다. 먼저 중복 순열, 순열 구하고2중 for문으로 각각의 각도에서 배열의 층을 쌓는 방식으로 모든 3차원 배열의 경우의 수를 체크했다.만든 큐브마다 BFS로 미로..
사실 SSAFY 12기에 합격하고 입과 해서 2주 정도 지났다.사피 합격하면 이것저것(합격후기, 머.. 등등)을 올리려고 했으나고등학교 이후 9 to 6을 오랜만에 해본 나는 집에 오면 쓰러지기 일쑤였다.. 사실 지금도 매우 피곤하지만 ( 알고리즘 문제는 매일 풉니다 ㅎㅎ) 스타트캠프도 끝났으니이번 SSAFY 12기에서 내가 이루고 싶은 것, 내가 얻어가고 싶은 것 을간단하게 정리해 보는 게 앞으로 1년간 큰 도움이 될 것 같다 1. 무엇을 배우고 싶어?1. Spring Framework백엔드 개발자가 목표면서 가장 배우고 싶은 지식은 대규모 트래픽을 수용하는 기술을 배우고 싶었다.사실 현업이 아닌 부트캠프 + 학업 수준에서 대규모 트래픽을 감당하는 프로젝트를 하기 힘들 뿐만 아니라조언을 구하기도 쉽지 ..
📑 문제🌱 아이디어좌표 (0,0)과 (x, y)의 기울기를 구하고, 기울기가 같은 풍선을 세어보자 풍선의 개수는 N 대충 봐도 모든 좌표를 탐색하는 건 불가능해 보인다 문제에서는 0,0에서 화살을 날려 -> (x, y) 풍선을 맞춰 터트릴 수 있다고 한다. 최대한 많은 풍선을 터트리려면 어떻게 해야 할까? 0,0 -> 1,2로 화살을 쐈다면 자연스럽게 화살의 이동 방향에 존재하는 풍선들은 터질 것이다. 이것을 그림으로 그려보면 위 처럼 된다.즉 풍선 A -> 풍선 B를 잇는 직선의 기울기를 구하고, 같은 기울기에 속한 풍선의 개수를 세면 된다! 기울기 M을 구하는 공식은 M = (y2-y1) /( x2-x1)이다, 그 후 기약분수로 표현하기 위해 최대공약수 도 구해서 나눠주면 된다 🌱 코드 ..
📑 문제 🌱 아이디어BFS로 각 섬에 번호를 부여하고, 모든 섬을 연결하는 다리잇기(MST)로 구현하자 2차원 평면 상 섬과 바다가 입력으로 주어지고, 다리를 연결해서 모든 섬을 연결하려고 한다.다리는 가장 짧게 연결해야 한다. 즉 모든 섬을 최소비용으로 모두 잇는다면 = 최소스패닝임을 유추해야 풀 수 있다. 아래와 같은 3단계를 거쳐서 구현했다. 1. 모든 섬을 탐색하고 번호를 부여한다 그래야 A -> B를 특정할 수 있다.2. A -> B가 직선으로 장애물 없이 다리를 이을 수 있는지 판단 후 우선순위큐에 시작노드, 목표노드, 비용을 입력하기3. 크루스칼알고리즘으로 모든 섬을 잇기 맵의 크기, 섬의 개수가 매우 작다, 시간초과를 걱정하는 것보다 차근차근 구현에 집중하는 게 좋은 문제인 것 같다!?..