본문 바로가기

전체 글121

프로그래머스 Lv3_단속카메라_Java https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { public int solution(int[][] routes) { // 차량의 이탈 지점을 기준으로 오름차순 정렬 Arrays.sort(routes, (o1, o2) -> o1[1] - o2[1]); // 첫 번째 카메라를 첫 번째 차량의 이탈 지점에 설치 int location.. 2024. 7. 7.
N+1 원인과 해결 방법 오늘은 JPA의 N+1 문제와 해결법에 대해 알아보자. N+1이란?한 번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 뜻한다.즉, 연관 관계가 설정된 엔티티 사이에서 한 엔티티를 조회 하였을때 한번의 쿼리로 해결할 수 있는 작업을 n+1 개의 쿼리로 실행하게 되는 문제이다.이해가 안되시나요?예를들어 하나의 POST가 있다고 칩시다. POST는 COMMENT와 OneToMany의 연관관계를 가지고 있습니다.순서대로 진행해 봅시다.POST 전체를 조회합니다. (1번의 쿼리 발생)POST 제목, 내용 조회 요청 (쿼리 발생 x)POST에 달린 COMMENT 내용 조회 요청 (조회된 POST의 개수(N) 만큼 추가적인 쿼리 발생)여기서 N+1이 발생합니다. (연관된 Entity를 불.. 2024. 7. 4.
JPA에서 Lazy Loading 과 Eager Loading 오늘은 Lazy Loading과 Eager Loading에 대해서 알아보자.영어 그대로 지연 로딩과,  즉시 로딩이다.Lazy Loading(지연 로딩)은 참조 객체들의 데이터들은 무시하고 해당 엔티티의 데이터만 가져오는 방식.Eager Loading(즉시 로딩)은 데이터를 가져올 때 하나의 객체만 가져오는 것이 아닌 참조 객체 데이터까지전부 읽어오는 방식예시를 보자아래에 User Entity가 있고 orders라는 필드는 지연 로딩 설정이 되어 있다.@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // 지연 로.. 2024. 7. 4.
프로그래머스 Lv3_최고의 집합_Java https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { public int[] solution(int n, int s) { int[] answer = new int[n]; if (n > s) { return new int[]{-1}; } int share = s / n; int.. 2024. 6. 27.
프로그래머스 Lv3_단어 변환_Java https://school.programmers.co.kr/learn/courses/30/lessons/43163?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { private String begin; private String target; private String[] words; private boolean[] visited; private int answer; public int solution(String begin, Str.. 2024. 6. 27.
프로그래머스 Lv3_야근 지수_Java https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQueue pq = new PriorityQueue(Collections.reverseOrder()); // 오름차순 for(int i : works) { .. 2024. 6. 26.
프로그래머스 Lv3_이중우선순위큐_Java https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { public int[] solution(String[] operations) { int[] answer = {}; PriorityQueue pq = new PriorityQueue(); // 오름차순 PriorityQueue reversePq = new PriorityQ.. 2024. 6. 26.
9해줘 KPT 회고 Keep - 현재 만족하고 있는 부분github 기능을 잘 활용해서 협업시에 많은 도움이 되었다팀원끼리 서로의 문제를 같이 해결해주어서 도움이 많이 되었다역할 분담을 체계적으로하여 병합시 큰 오류 없이 잘 해결한 것 같다도전적으로 자신이 해보지 않았던 부분을 하여 성장할 수 있었다Problem - 불편하게 느끼는 부분계층형 구조로 디렉토리를 설계하다보니 하나의 패키지 안의 클래스가 많아졌다백오피스 api들에서 admin 검증 로직 반복되는 문제Try - Problem에 대한 해결책, 당장 실행 가능한 것백오피스 api를 검증하는 로직을 aop나 hasRole로 분리하자프로젝트에 따라 계층형 구조로 설계할지 도메인 구조로 설계할지 잘 생각해보자 팀 노션https://www.notion.so/teamspar.. 2024. 6. 25.