본문 바로가기

전체 글62

BFS / DFS 정리 (진행중) DFS : Root Node 혹은 다른 임의의 Node에서 다음 분기(Branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법이다. Stack 혹은 재귀함수(Recursion) 으로 구현된다. 경로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게되면 다른 방향으로 다시 탐색을 진행 모든 노드를 방문하는 경우에 이 방법을 사용한다.재귀 함수를 사용할 때에는 종료 조건을 꼭 명시해야 함 재귀 함수를 사용할 때에는 종료 조건을 꼭 명시해야 함 BFS : Root Node 혹은 다른 임의의 노드에서 인접한 노드를 먼저 탐색하는 방법이다. Queue를 사용해서 구현한다. 2024. 4. 19.
스프링 환경설정 셋팅 1. Build and run using, Run tests using 2개의 값을 IntelliJ IDEA로 변경하면 인텔리제이가 직접 자바 프로젝트를 실행하고, 조금 더 빨리 로드됩니다. 2. 스프링 부트 3.2부터 자바 컴파일러에 -parameters 옵션을 넣어주어야 애노테이션의 이름을 생략할 수 있다. 주로 아래의 애노테이션을 사용할 때 문제가 발생한다. @RequestParam, @PathVariable, @Autowired, @ConfigurationProperties 해결 방안1) 애노테이션에 이름을 생략하지 않고 다음과 같이 이름을 항상 적어준다. @RequestParam("username") String username @PathVariable("userId") String userId.. 2024. 4. 18.
[Docker] Java17 + Spring Boot + Docker + AWS EC2에 배포하기 스프링부트 프로젝트를 도커를 통해서 EC2에 배포하고자 한다 과정을 살펴보면 아래와 같다. 1. 로컬에서 스프링부트 프로젝트를 빌드하여 review-0.0.1-SNAPSHOT.jar 파일 생성 2. 위의 빌드한 파일을 도커 이미지로 만든 후 Docker Hub Repository에 push 3. EC2에서 Docker Hub Repository를 통해 이미지 pull 4. 배포 완료 📍 1. Dockerfile 생성하기 FROM openjdk:17 # JAR_FILE 변수 정의 -> 기본적으로 jar file이 2개이기 때문에 이름을 특정해야함 ARG JAR_FILE=./build/libs/review-0.0.1-SNAPSHOT.jar # JAR 파일 메인 디렉토리에 복사 COPY ${JAR_FILE} .. 2024. 4. 14.
페이징 쿼리 최적화 들어가기 전에... 지금 부터 설명할, 두 코드 모두 전체 데이터를 가져오는데 사용할 수 있지만, 성능 면에서 차이가 있다. 첫번째 방법의 경우 query.fetch().size()를 사용하여 전체 데이터 개수를 가져온다. 이는 쿼리를 실행하여 모든 결과를 가져온 후 리스트의 크기를 반환하는 방식이다. 이렇게 하면 전체 결과를 메모리로 가져오기 때문에 가져올 데이터가 매우 큰 경우, 성능이 저하될 수 있다. 또한, fetch().size() 메서드 호출이 실제로는 모든 결과를 가져오기 때문에 성능적으로 비효율적이다. 두 번째 방법에서는 count 쿼리를 사용하여 전체 레코드 수를 가져온다. count 쿼리는 실제 데이터를 가져오지 않고 단순히 데이터 개수만을 반환하므로, 성능상의 이점이 있다. 또한, 전.. 2024. 4. 6.
[2차원 배열 서로 다른 기준으로 정렬] 인사고과 https://school.programmers.co.kr/learn/courses/30/lessons/152995 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡문제 분석 요약 [근무태도점수, 동료평가점수] 점수 합 = 근무태도 점수 + 동료 평가 점수 1. 기준 미달 사원 제외 2. 제외하고 남은 사원 점수 합 내림차순 정렬하여 등수 매기기 3. 정렬할 때, 완호의 점수 위치가 바뀌므로 원호의 점수를 따로 저장 💡알고리즘 설계 1. 정렬하기 근무 태도 점수로 일단 내림차순을 하고, 근무 태도 점수가 동일할 경우, 동료 평가 점수로 오름차순 정렬한다... 2024. 4. 4.
[DFS] 혼자 놀기의 달인 https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡문제 분석 요약 상자 1번 2번 3번 4번 5번 6번 7번 8번 숫자 8 6 3 7 2 5 1 4 만약 1번상자-숫자8을 뽑을경우 뽑은 숫자인 8번이 적힌 상자에서 카드를 뽑는다 이미 연 상자 일 경우, 탐색을 종료한다. 1번상자(8) -> 8번상자(4) -> 4번상자(7) -> 7번상자(1) -> 1번상자(8) (X): 1번 상자는 이미 연 상자이므로 7번상자 까지가 첫번째 그룹이다. 💡알고.. 2024. 4. 2.