
서론 토이 프로젝트 진행 중 아래와 같은 쿼리 사용이 필요했고, QueryDSL을 한 번 사용해보기로 했음. select C.CHAMPION_ID, C.PRICE, ROUND((C.PRICE-CP.PRICE)/CP.PRICE*100) as PERCENT from Champion C, (select CC.CHAMPION_ID, CC.PRICE from ChampionPriceLog CC where (CC.CHAMPION_ID, CC.CREATE_DATE) in(select CCC.CHAMPION_ID, MAX(CCC.CREATE_DATE) AS CREATE_DATE from ChampionPriceLog CCC group by CCC.CHAMPION_ID) order by CC.CHAMPION_ID) as..

서론 이전 글에 나왔던 키워드 중 JPQL에 대해 조금이라도 알아보기 위해 정리하는 글 JPQL(Java Persitence Query Language)이란? 엔티티 객체를 대상으로 하는 객체지향 쿼리로 SQL을 추상화한 객체지향 쿼리이며, 작성된 JPQL은 SQL로 변환된다. 기존 JPA의 메서드 호출만으로는 섬세한 쿼리 작성이 어렵다는 문제를 해결하기 위해 JPQL이 나타나게 되었으며 SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는다는 장점이 있다. SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원한다. 예시 Member 객체를 대상으로 이름에 "bazzi"가 포함된 모든 회원을 검색하는 쿼리 String jpql = "select m From ..

서론 인강은 끝이 났고, 인강 내용을 바탕으로 첫 테스트 코드를 적용한 토이 프로젝트 내 코드들을 조금 리뷰해보려고 한다. 프로젝트를 간단히 소개하자면, 그냥 롤 챔피언 정보를 JSON으로 받아와서 무언가를 하는 서비스를 구현 할 예정이다. 우선 돌아가게는 작성했는데 테스트 코드를 처음 직접 활용하다보니 부족한 부분이 많을 수 있다. 혹여 지나가다 보시는 고수분들께서 틀린 점이 있다면 지적좀 해주시면 감사할 따름.. 단위 테스트 Champion의 Repository에 대한 테스트를 작성했다. package com.example.lolchampionsinvestment.domain.champion; import org.junit.jupiter.api.DisplayName; import org.junit.j..
![[IntelliJ] 프로젝트 폴더가 보이지 않을 때](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTWh3b%2Fbtso6j9xKml%2Ff6PXkFdpHVMjYhj9K6P1D0%2Fimg.png)
작업을 인텔리제이로 하고 있다가 다음날 해당 프로젝트 루트를 불러왔더니 열심히 작업해놓은 디렉토리들이 하나도 보이지 않았다.. 해결법 1. File - Project Structure의 Project Settings - Module 탭에서 +를눌려 Import Module 선택 원하는 프로젝트의 루트 경로와 프로젝트의 모델 선택 보통 위의 과정을 통해 해결된다고 하는데 난 이미 등록된 프로젝트인데 나오지 않았음.. 해결책 2. 프로젝트 루트 경로의 .idea폴더를 삭제한다 재실행했더니 잘 보인다..

서론 테스트 코드에 대한 공부 중에 Scrum, Kanban, XP(eXtreme Programing)과 같은 키워드가 등장했고 찾아보니 전부 애자일 방법론이라는 공통 뿌리를 발견하게 되었다. 소프트웨어 개발 방법론에는 여러가지가 있지만, 그 중 애자일 방법론이라는 키워드를 얻게 되어 공부를 위한 포스팅이다. 구글링 중 애자일 방법론이 등장한 배경과 같은 자료들도 많아서 읽어보았고 개인적으로 가장 잘 읽혔던 것을 하나 공유해둔다. '애자일은 뭐고 폭포수는 뭐야?' 애자일 방법론 역사 이해하기 요즘은 모든 기술 조직이 어떤 형태로든 애자일 방법론을 실천하거나 그렇게 하고 있다고 믿는 것 같다. 소프트웨어 개발에 처음 발을 들여놓는 사람 www.itworld.co.kr 폭포수(Waterfall) 방법론 폭포..
![[백준 1043번 / Java] 거짓말](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdWVRS%2FbtsoeJvgAAp%2FJ8IzlA4szblgkAdCYbsoEK%2Fimg.png)
문제 링크 Gold 4 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 첫 풀이 크게 시간, 메모리 고려를 하지 않아도 될 것 같아보여서 뇌를 빼고 풀어보려고 했다. (사실 Union Find에 자신이..) 단순 String배열을 활용하고, List에 String배열을 저장하여 정답을 도출하려고 했고, 문제에서 제공하는 테스트케이스를 만족해서 됐다!!! 라고 생각했다. import java.io.BufferedReader; import java.io.IO..
![[백준 10026번 / Java] 적록색약 - DFS/BFS](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaisEu%2Fbtsn7uqFir0%2FatOyavBkmLVHeVFLUotkQK%2Fimg.png)
문제 링크 Gold 5 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 풀이 필자는 BFS를 이용해 풀었으며 실버 DP문제들 보다 난이도가 쉬운 것 같다. 처음에는, BFS 메서드를 통해 한 번 완전탐색을 끝낸 후 바로 결과를 도출시키려고 했고, 실패했다. 이유는 모든 결과를 고려하지 않아서 인 것 같다. 어떤 경우였냐면 //bfs메서드의 파라미터로 color을 받아 RGBCheck배열 체크 switch(color) { case 'R':..
![[백준 2805번 / Java] 나무 자르기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxEchT%2Fbtsn3ktGEBv%2FyEQDFl1Du6eR67kDgjkEb0%2Fimg.png)
문제 풀이 Silver 2 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 풀이 Binary Search 중 Upper Bound를 이용한 문제 [알고리즘] Upper Bound, Lower Bound [알고리즘] Upper Bound, Lower Bound 서론 Upper Bound, Lower Bound는 이진탐색을 활용한 알고리즘이다. [알고리즘] 이진탐색(이분탐색) - Binary Search Bi..