전체 글 146

[ODOQ] Spring Data JPA에서 새로운 Entity인지 판단하는 방법

[One Day One Question]Spring Data JPA에서 새로운 Entity인지 판단하는 방법은? 1. @Id 필드를 기준으로 판단JPA는 엔티티의 @Id 필드가 null이거나 기본값일 경우, 해당 엔티티를 새로운 엔티티로 간주합니다.엔티티가 영속성 컨텍스트에 존재하지 않고 @Id 필드가 null인 경우, 새로운 엔티티로 판단합니다.public boolean isNew(Entity entity) { return entity.getId() == null; // ID가 null이면 새로운 엔티티로 간주} 2. Persistable 인터페이스 구현@Id 필드가 null이 아닌 경우에도 새로운 엔티티로 취급해야 할 상황(예: ID가 수동으로 생성되는 경우)이 있을 수 있습니다.이런 경우, 엔..

cs/ODOQ 2024.11.21

[프로그래머스] 혼자 놀기의 달인 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요범희는 1부터 100까지의 숫자가 적힌 카드로 혼자 게임을 즐깁니다. 게임은 숫자 카드가 담긴 상자들을 무작위로 배치하고, 특정 상자를 선택하여 안의 숫자를 확인한 뒤, 그 숫자에 해당하는 상자를 열어가며 진행됩니다. 이미 열린 상자를 만나면 하나의 그룹이 형성되며, 같은 방식으로 다른 그룹을 만들어갑니다. 상자들은 모두 두 개의 그룹으로 나뉘며, 각 그룹의 크기를 곱한 값이 게임의 점수가 됩니다. 주어진 카드 번호 배열 car..

[프로그래머스] 혼자서 하는 틱택토 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/160585 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요틱택토 게임을 혼자서 진행하던 머쓱이가 규칙을 어겼는지 판단하기 위해, 현재 게임판이 규칙에 맞는 상태인지 확인하는 문제입니다. 게임판을 나타내는 문자열 배열 board가 주어질 때, 규칙에 맞는 상태라면 1을, 그렇지 않으면 0을 반환하는 solution 함수를 작성하는 문제입니다.규칙 위반 조건:"O"와 "X"의 순서가 맞지 않은 경우 ("O" 차례에 "X"가 표시되거나 그 반대).승리 조건이 충족되어 게임이 종료되어야 하는..

[프로그래머스] 시소 짝꿍 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 설명어느 공원 놀이터에는 시소가 하나 설치되어 있습니다. 이 시소는 중심으로부터 각각 2(m), 3(m), 4(m) 거리의 지점에 좌석이 하나씩 설치되어 있습니다. 두 명의 사람이 마주 보고 시소에 앉았을 때, 시소가 평형 상태를 유지하려면 양쪽에 작용하는 토크의 크기가 같아야 합니다. 즉, 각 사람의 무게와 시소 축과의 거리의 곱이 동일하다면, 두 사람은 "시소 짝꿍"이라고 할 수 있습니다.주어진 문제는 사람들의 몸무게 목록 we..

투 포인터 (Two Pointers)

투 포인터 (Two Pointers) 알고리즘이란?투 포인터(Two Pointers) 알고리즘은 배열이나 리스트에서 특정 조건을 만족하는 부분 구간을 빠르게 탐색하기 위해 사용하는 효율적인 알고리즘 기법입니다. 주로 정렬된 배열이나 리스트에서 연속된 부분 수열을 찾거나 특정 합을 구하는 문제에서 자주 활용됩니다. 이 방법은 두 개의 포인터를 사용하여 탐색을 진행하며, O(n)의 시간 복잡도를 제공하여 대량의 데이터를 효율적으로 처리할 수 있습니다. 투 포인터의 동작 원리투 포인터 알고리즘은 보통 두 가지 포인터를 사용하여 배열의 시작점과 끝점 또는 배열의 특정 부분을 탐색합니다. 이 두 포인터는 보통 다음과 같이 동작합니다:포인터의 초기화:하나의 포인터는 배열의 시작 위치(start)에, 다른 포인터는 ..

cs/알고리즘 2024.11.17

[프로그래머스] 연속된 부분 수열의 합 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/178870# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이번 문제는 비내림차순(오름차순)으로 정렬된 수열에서 특정 조건을 만족하는 부분 수열을 찾아내는 문제입니다. 수열과 목표 합 k가 주어졌을 때, 다음과 같은 조건을 만족하는 부분 수열의 시작과 끝 인덱스를 찾아야 합니다. 문제 접근 방법문제를 해결하기 위해 투 포인터 알고리즘을 사용하였습니다. 이 방법은 효율적인 연속 부분 수열 탐색에 적합하며, 특정 조건을 만족하는 수열의 구간을 빠르게 탐색할 수 있습니다. 다음은 문제를 해..

[프로그래머스] N-Queen - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12952 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이 문제는 N-Queens 문제로, 체스판 위에 n개의 퀸을 배치할 때 서로 공격할 수 없도록 하는 방법의 수를 찾는 문제입니다. 퀸은 체스판에서 가로, 세로, 대각선으로 이동할 수 있기 때문에 서로를 공격할 수 없는 위치에 놓는 것이 중요합니다. 접근 방법이 문제는 백트래킹(Backtracking) 기법을 사용하여 해결할 수 있습니다. 백트래킹은 해를 찾는 과정에서 불가능한 경로는 더 깊이 탐색하지 않고 가지를 치는 방식입니다...

[프로그래머스] 거리두기 확인하기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/81302#fn1 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명개발자를 희망하는 죠르디가 카카오에 면접을 보러 갔습니다. 코로나 바이러스 감염 예방을 위해 응시자들은 대기실에서 거리를 두고 앉아야 합니다. 대기실은 5개이며, 각 대기실은 5x5 크기로 구성되어 있습니다. 응시자들 간의 맨해튼 거리가 2 이하로 앉지 않도록 해야 하며, 파티션(X)으로 막혀 있는 경우에는 거리두기를 지킨 것으로 간주합니다.대기실의 구조는 다음과 같은 기호로 표현됩니다:P: 응시자가 앉아있는 자리O: 빈 테..

[프로그래머스] [PCCE 기출문제] 10번 / 공원 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340198 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 설명지민이는 공원에 이미 많은 사람들이 깔아놓은 돗자리를 피해 자신이 가지고 온 돗자리를 깔고 싶습니다. 지민이가 깔 수 있는 돗자리는 정사각형 형태로, 각 돗자리의 한 변 길이는 리스트 mats에 주어집니다. 공원의 현재 자리 배치는 2차원 배열 park로 주어지며, -1은 빈 공간을 나타내고 알파벳은 이미 돗자리가 깔린 자리를 의미합니다.지민이가 가진 돗자리 중 공원에서 깔 수 있는 가장 큰 돗자리의 한 변 길이를 찾아 반환해야..

[프로그래머스] 택배 배달과 수거하기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명주어진 문제는 트럭의 배달 및 수거를 최소 이동 거리로 완료하는 방법을 찾는 것입니다. 트럭은 물류창고에서 출발하여 각 집을 순회하면서 택배를 배달하고 빈 택배 상자를 수거해야 합니다. 트럭의 최대 적재량은 cap으로 주어지며, deliveries와 pickups 배열이 각각 각 집에 배달할 택배 상자와 수거할 빈 택배 상자의 개수를 나타냅니다.접근 방식뒤에서 앞으로 순회:마지막 집부터 첫 번째 집까지 역순으로 순회합니다. 이는 ..