기업 코딩 테스트를 준비하기 위해 백준 알고리즘 문제 한 달에 30문제 풀기 (성공)면접에 대한 준비를 하기 위해 백엔드 개발자 면접 질문 한 달에 20개 정리하여 블로그에 기록하기(성공)2-1. \[기술 면접] 영속성 컨텍스트란?2-2. \[기술 면접] JPA 즉시
최대 점프 가능 횟수가 주어진 리스트에서 마지막 인덱스까지 이동이 가능한지 확인하는 문제이다. 간단하게 그리디 방식으로 풀었다.for문으로 리스트를 탐색해서 이동 가능한 곳들을 모두 체크해서 마지막 인덱스까지 이동이 가능한지 확인하는 것이다.처음엔 위와 같이 했지만 시
언제든 주식을 사고 팔 수 있는 상황에서 가장 많은 수익을 냈을 때의 값을 찾는 문제이다. 이 문제는 그리디 방식으로 풀었다.주식을 살 수 있을 때 최대한 싼 주식으로 사고, 팔 수 있을 때는 무조건 팔면서 수익을 극대화하면 된다.산 주식을 리스트의 첫 번째 원소로 지
주식의 값들이 주어질 때, 어떤 날에 사거나 팔아서 가장 수익을 많이 낼 수 있는 값을 찾는 문제이다.나는 dp로 이 문제를 풀었다.dp 리스트를 만들어준다.산 주식을 첫 번째 리스트 원소로 지정해준다.for문을 두 번째 원소부터 시작하여 탐색한다.dp 리스트에 현재
리스트가 원으로 연결되어 있다고 생각하고, 시계 방향으로 회전시키는 문제이다.파이썬은 위와 같이 rotate 함수를 자체적으로 지원해줘서 이 함수를 가져다 쓰면 손쉽게 구현할 수 있지만 LeetCode는 리스트를 새로 선언하는 것을 다른 리스트로 판단하고, 인정해주지
리스트의 길이 / 2 보다 중복 개수가 많은 원소들 중에서 가장 높은 원소를 return 해주는 문제이다.int defaultdict를 선언해준다.for문으로 리스트를 탐색한다.딕셔너리에 원소의 개수를 1씩 더해 카운트 해준다.원소의 개수가 리스트의 길이 / 2 보다
리스트 원소의 중복된 값을 2개까지만 허용하고, 나머지는 제거하는 문제이다.처음에는 위와 같이 리스트를 만들어 값을 해당 값이 몇 개인지 기록을 했었는데 음수 값도 존재하기 때문에 음수를 표현하기 곤란해서 리스트 대신 딕셔너리를 활용했다.int defaultdict를
리스트의 중복 원소를 제거해주는 문제이다.파이썬은 위와 같이 set으로 옮겨 담으면 중복을 제거할 수 있지만 LeetCode는 기존의 저런식으로 nums를 재선언하는 것을 답으로 허용하지 않는 것 같다. 그래서 중복을 일일히 찾아서 제거해줬다.for 문으로 리스트를 탐
nums1은 인덱스 m개의 원소, nums2는 인덱스 n까지의 원소를 가진 채 nums2를 nums1에 합치고 정렬하는 문제였다.nums1 리스트를 슬라이싱으로 m개까지 자른다.nums2 리스트를 슬라이싱으로 n개까지 자른다.num1 리스트에 nums2 리스트를 더하여
드디어 백준장학금 마지막 주차가 끝났다... 길다면 길고 짧다면 짧은 한 달의 기간이었다.1일 1커밋은 7월 19일부터 시작해서 8월 20일까지 꾸준히 프로젝트와 알고리즘 공부했던 것을 정리하면서 성공할 수 있었다. 꾸준하게 매일매일 하는 게 가장 어렵다고 생각했는데
최소 동전 개수를 구해야 하기 때문에 5원 짜리의 개수가 더 많도록 거스름돈을 구해주면 된다.5로 나누어 떨어지는지 확인한다.5로 나누어 떨어지지 않는다면 2를 뺀다.5로 나누어 떨어질 때까지 1,2의 과정을 반복한다.돈이 0이 된다면 동전의 개수를 출력하고, 음수가
3 곱하기 3 칸씩 뒤집을 수 있기 때문에 2중 for문을 통해서 0부터 순서대로 행렬이 다를 경우 뒤집는 걸 반복하다 보면 왼쪽 위부터 순서대로 다른 것들만 뒤집기 했기 때문에 이미 뒤집어서 같게 바꿔줬던 건 바뀔 일이 없어서 두 행렬이 같아지는 결과를 얻을 수 있다
이전 레벨의 점수가 다음 레벨의 점수보다 낮아지도록 바꾸면 된다.하지만 앞에서부터 확인하면서 바꿔주면 경우의 수가 더 많아지기 때문에 뒤에서부터 확인해준다.맨 마지막 점수(높은 레벨의 점수)부터 그 앞의 수(낮은 레벨의 점수)와 비교한다.낮은 레벨의 점수가 높은 레벨의
replace 함수는 왼쪽부터 해당하는 것을 치환해주기 때문에 replace 함수를 사용하면 간단하다.'XXXX'를 먼저 'AAAA'로 치환해준다.1번을 수행한 결과에서 'XX'를 'BB'로 치환해준다.이렇게 해서 X가 남아있다면 -1, 아니면 결과를 출력해준다.
문제병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다.2칸 위로, 1칸 오른쪽1칸 위로, 2칸 오른쪽1칸 아래로, 2칸 오른쪽2칸 아래로, 1칸 오른쪽병든 나이트는 여행
스프링을 처음 배울 때 김영한 님의 무료 스프링 강의 기본편을 들으며 개념에 대해서 들었는데 내용이 너무 어렵고 머릿속에 들어오지 않았다.나는 개념을 먼저 익히고 프로젝트에 적용시키기 보다는 프로젝트에 적용시키면서 그것에 대해 이해를 하고 알아가는 타입이라는 걸 깨닫고
영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.비영속
JPA에서는 데이터를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 두 가지 방식이 있다. 이 두 가지 방식을 간단하게 설명하면 즉시 로딩은 데이터를 조회할 때 연관된 데이터까지 한 번에 불러오는 것이고, 지연 로딩은 필요한 시점에 연관된 데이터를 불러오는
QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크다.QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해준다.자바 백엔드 기술은 Spring
위 사진을 보면 알 수 있듯 ArrayList는 index가 있고, LinkedList는 각 원소마다 앞,뒤 원소의 위치를 가지고 있다.이러한 각각의 특징은 조회, 삽입, 삭제 시에 성능의 차이를 발생시킨다.ArrayList는 기본적으로 배열을 사용한다. 하지만 배열과