분류 전체보기 148

[ODOQ] JPA의 ddl-auto 옵션

[One Day One Question]JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요? JPA의 ddl-auto 옵션은 Hibernate에서 데이터베이스 스키마를 어떻게 관리할지를 설정하는 옵션입니다. 이 옵션은 application.yml 또는 application.properties 파일에서 설정하며, 다양한 환경에서 유용하게 사용할 수 있습니다.주요 옵션과 동작none동작: JPA가 데이터베이스 스키마 생성이나 수정 작업을 수행하지 않음.사용 상황: 이미 정의된 스키마를 사용하고, 애플리케이션이 데이터베이스 스키마를 변경하지 않아야 하는 프로덕션 환경.validate동작: 엔티티와 데이터베이스 스키마가 일치하는지 검증.사용 상황: 스키마는 외부에서 생성하고, ..

cs/ODOQ 2024.11.22

[프로그래머스] [PCCP 기출문제] 2번 / 석유 시추 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요문제는 세로 n, 가로 m의 격자에서 석유가 묻힌 땅을 분석하여, 수직으로 한 줄 시추관을 설치했을 때 뽑을 수 있는 석유량이 최대가 되는 위치를 찾는 것입니다.석유는 상하좌우로 연결된 1의 집합(덩어리)로 표현됩니다. 시추관이 지나는 열에서 해당 석유 덩어리에 포함된 모든 석유를 뽑을 수 있습니다.최종적으로, 각 열에 대해 가능한 석유량을 계산하고 그중 최대값을 반환합니다. 접근 방법1. 덩어리 구분 및 크기 계산주어진 격자 ..

[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: 빈 테..