분류 전체보기
![[Inflearn] JPA 시작하기 + JPQL이란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7ubLu%2FbtrwJu93g2q%2FKQUSxs5QFvNZkgutydkRk1%2Fimg.png)
[Inflearn] JPA 시작하기 + JPQL이란?
김영한 강사님의 '자바 ORM 표준 JPA 프로그래밍-기본편' 강의 정리 2022.03.17~03.31 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. 프로젝트 생성 자바 8이상 (저는 11을 사용하였습니다) 빌드 툴은 Maven을 사용 InteliJ에서 Maven 프로젝트를 새로 생성합니다. 라이브러리 설정파일 pom.xml JPA 하이버네이트, 데이터베이스 드라이버 등 필요한 의존설정을 추가합니다. 자바 11을 사용했을 때 오류 해결방법 : pom.xml에 다음 코드를 추가 javax.xml.bind jaxb-api 2.3.0 JPA 설정하기 - persistence.xml JPA 설정 파일 /META-INF/persistence..
![[Inflearn] ORM, JPA란 무엇인가](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHFgbn%2FbtryrqkYM2Z%2FNMv1kVOGVetCbRwRImszn1%2Fimg.png)
[Inflearn] ORM, JPA란 무엇인가
김영한 강사님의 '자바 ORM 표준 JPA 프로그래밍-기본편' 강의 정리 2022.03.17~03.31 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. JPA와 모던 자바 데이터 저장 기술 Java와 같은 객체지향 언어로 실무 개발을 할 때에는 주로 관계형 DB를 사용한다. 문제는 애플리케이션은 객체지향적으로 개발을 해야하는데, SQL을 계속 날려야 하기 때문에 SQL 중심적인 개발이 되는 것이다. 1. SQL 중심적인 개발의 문제점 SQL 중심적인 개발은 다음과 같은 문제가 있다. 무한반복, 지루한 코드 → SQL 매핑에 많은 시간소요(노가다) 객체 CRUD 코드에 필드가 추가 될 경우 SQL을 일일히 고쳐주어야 한다 → 유지보수성..
![[Inflearn] 스프링 MVC (8) 웹 페이지 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcT97s%2FbtrvkHKs1To%2FqqYDOU4IpDthIGqecIXha0%2Fimg.png)
[Inflearn] 스프링 MVC (8) 웹 페이지 만들기
김영한 강사님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의 정리 2022.02.21,03.7 진행 강의를 듣고 개인적으로 정리한 글입니다. 코드와 그림 출처는 김영한 강사님께 있습니다. 문제 있을 시 알려주세요. 드디어 이번 강의 마지막 파트! 졸업과 밴드 합주, 정보처리기사 필기시험 준비 등이 겹쳐 바쁜지라 그간 강의를 거의 듣지 않았다... 필기합격한거 같으니 다시 빠샤~! 다음 강의도 쭉쭉 들어야지 😋 상품 도메인 package hello.itemservice.domain.item; import lombok.Data; import lombok.Getter; import lombok.Setter; //@Data //다만들어줘서 위험하다..(숙지 필요)일반 왔다갔다하는 DTO 정도는 괜..
![[PS] 백준 11055번 가장 큰 증가 부분 수열 - DP](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw9O95%2FbtrsO2DOhmY%2FrTrkjah6BFCEiFRdFK3ZMk%2Fimg.png)
[PS] 백준 11055번 가장 큰 증가 부분 수열 - DP
문제 예제 풀이 가장 긴 증가 부분 수열 문제를 변형한 문제이다. 이전 문제와 다른 것은 dp[탐색위치]에 수열의 길이가 아니라 증가수열의 누적합을 저장하는 것이다. 우선 arr 배열에 입력값을 저장한다. dp[1]은 초기 누적합이므로 arr[1] 그대로를 저장한다. dp[i] 값을 저장하기 위해 i=2부터 n일 때까지 반복문을 돈다. 우선 현재 위치의 누적합 dp[i]에 값 그대로 arr[i]를 저장한다. 현재위치는 i이고, arr배열을 j=1부터 현재위치 이전(i-1)까지 탐색한다고 할 때, 가장 큰 증가수열이여야 하므로 현재 값 arr[i]가 탐색값 arr[j]보다 크다면 이전누적합 + 현재위치값 과 현재누적합 중 큰 것을 dp[i]에 저장한다. (그래야 가장 큰 합의 증가수열 누적합을 저장할 ..
![[PS] 백준 11053번 가장 긴 증가하는 부분 수열 - DP](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZffdc%2FbtrsQ9CfHEA%2Fwx6rQCcwXyqWRmgjJcsAJ0%2Fimg.png)
[PS] 백준 11053번 가장 긴 증가하는 부분 수열 - DP
문제 예제 풀이 이 풀이를 참고하였다. 이해하기 쉽게 그림까지 있고 잘 정리된 포스팅이어서 겨우 이해했다 ^^.. 먼저 arr 배열에 입력 값을 넣는다. 반복문으로 dp[2]부터 dp[n]까지 1씩 위치를 이동(i = 2~n)해가며 dp배열에 가장 긴 수열의 길이를 저장할 것이다. dp[1]은 초기 시작지점이므로 1로 초기화한다. 또한 출력할 최대값을 저장할 변수를 1로 초기화 해두고 시작한다. 맨처음값 부터 검증위치(i) 이전까지 arr 배열을 탐색(j)할 것이므로 이중 반복문을 돌린다. i는 증가수열이 될 수 있는지 검증할 위치의 값이고, j는 1부터 i의 이전위치까지 탐색하기 위한 값이다. 우선 dp[검증위치]값에 1을 저장해둔다. 탐색값보다 검증값이 크고 검증dp값(누적될 것임)이 현재dp..
![[PS] 백준 2156번 포도주 시식 - DP](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdvff7q%2FbtrsRYmU1wb%2F4jMlmWEIe3Zp0RuxzeAsZK%2Fimg.png)
[PS] 백준 2156번 포도주 시식 - DP
문제 예제 풀이 풀다가 영 감이 안와서 이전 문제에서 참고했던 블로그가 이해하기 쉽게 코드를 짜여있길래 또 참고한 풀이 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Scanner; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { Scanner in = new Scanner(System.in); int n = in..
![[PS] 백준 9456번 스티커 - DP](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU2iNr%2FbtrsQpLHhI9%2FajgPH8tnGBdf1GyunCoH91%2Fimg.png)
[PS] 백준 9456번 스티커 - DP
문제 예제 풀이 이 풀이를 참고하였다. 스티커의 점수를 저장할 배열 arr[n+1][2]을 선언하고, 점수 합산결과를 저장할 dp[n+1][2] 배열을 선언한다. 첫번째 칸의 점수는 arr배열에서 dp배열로 dp[1][0], dp[1][1] 미리 저장해두고, 두번째 칸 부터 n번째 칸까지 i로 반복문을 돈다. i번째 칸의 점수를 마지막 값이라고 가정하면 최대값이 되기 위해서는 다음 그림과 같이 왼쪽 대각선 칸과 그 옆칸 중 합산값이 큰 값을 골라야 한다. 따라서 dp[i][0]이 마지막 값일 때에는 자신의 값 + dp[i-1][1]과 dp[i-2][1] 중 큰 값이 최대값이 된다. dp[i][1]이 마지막 값일 때는 자신의 값 + dp[i-1][0]과 dp[i-2][0] 중 큰 값이 최대값이 된다. d[..