본문 바로가기

Java24

[QueryDSL] CaseBuilder 활용 조건식 표현 SQL에서 조건별로 값을 다르게 리턴하는 CASE 문은 자주 사용됩니다.예를 들어, 아래와 같은 쿼리를 생각해볼 수 있습니다.SELECT name, score, CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' ELSE 'C' END AS gradeFROM student;이 코드를 Java에서 QueryDSL을 사용해 표현하려면 어떻게 작성해야 할까요? QueryDSL에서 CASE문 작성 시 주의점아래와 같은 코드를 작성했다고 가정해 봅시다.student.score.goe(90).then(1) .when(student.score.goe(80)).then(2) ... 2025. 6. 16.
Lombok 필드 타입에 따른 setter 생성 차이점 Lombok은 setter를 생성할 때set + 기존 엔티티 필드명규칙으로 짓습니다. 다만 필드 타입에 따라 setter가 다르게 생성됩니다.필드 타입필드명Lombok GetterLombok SetterbooleanisSomethingisSomethingsetSomethingBooleanisSomethinggetIsSomethingsetIsSomething표처럼 생성되게 됩니다. Boolean은 객체 타입이기 때문에 단순 문자열로 처리되어, getIsX() / setIsX()처럼 원래 필드명을 그대로 사용합니다.boolean같은 원시 타입의 경우, Lombok은 is 접두어를 무시하고 setUse()만 생성합니다. 2025. 5. 16.
[프로그래머스] 피로도 (Java) 이번 문제는 완전탐색(BFS)를 활용해 풀어야 합니다.사실 완전탐색을 잘 몰라서 해당 개념을 서치하고, 다른 분들은 어떻게 푸셨는지 많이 참고해서 풀어보았습니다. 다만 모두 완전탐색을 안다는 것을 전제로 설명한 글이 많기에동작을 제대로 설명해주는 글이 없는듯하여 어떤 과정으로 코드가 동작된건지 설명하려합니다. 중요한 포인트는 세가지 입니다.1. 방문 여부 & 최소 피로도 만족 확인2. 다음 던전으로3. 다음 던전에 못가면 처음부터 다시 탐색   코드를 순서대로 실행하다보면 중간에 탐험이 불가능해질때가 생깁니다.  이때 재귀함수가 멈추고 visited[n] = false로 재정의됩니다.그리고 반복문에 의해 그 다음 n+1 자리로 가게 됩니다.  그리고 다시 재귀함수를 돌게 됩니다.끝까지 잘돌면 answer.. 2025. 3. 28.
[프로그래머스] 기능개발 (Java) 문제  1. 기능별 작업일수 계산하기for (int i = 0; i  2. 배포일 기억해두고, 해당 작업이랑 같이 배포 가능한 작업들 개수 세기for (int i = 0; i   import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] daysArr = new int[progresses.length]; for (int i = 0; i answer = new ArrayList(); int prevMaxDays = daysArr[0]; int count = 0; for (int i = 0; i .. 2025. 3. 26.
[프로그래머스] Java : 행렬의 곱셈 위의 행렬의 곱셈 규칙을 확인해가며 풀었습니다. class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; for (int i = 0; i 2025. 3. 13.
[프로그래머스] Java : 무인도 여행(DFS) 문제메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타냅니다. 이때, 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룹니다. 지도의 각 칸에 적힌 숫자는 식량을 나타내는데, 상, 하, 좌, 우로 연결되는 칸에 적힌 숫자를 모두 합한 값은 해당 무인도에서 최대 며칠동안 머물 수 있는지를 나타냅니다. 어떤 섬으로 놀러 갈지 못 정한 메리는 우선 각 섬에서 최대 며칠씩 머물 수 있는지 알아본 후 놀러갈 섬을 결정하려 합니다.지도를 나타.. 2025. 2. 27.
[프로그래머스] Java : 귤 고르기 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다.예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다.경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 서로 다른 종.. 2025. 2. 14.
[프로그래머스] Java : N개의 최소공배수 문제)두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.입출력 예)arrresult[2, 6, 8, 14]168[1, 2, 3]6  제가 생각한 알고리즘은 두수의 최소공배수를 구하는 방법을 확장시킨겁니다.예를 들어 3과 4의 최소공배수는 12이고, 2와 6의 최소공배수는 6입니다.이를 구하는 방법은 a * b / (최대공약수) 를 떠올리시면 됩니다.저는.. 2025. 2. 5.