전체 글154 [백준] 17425-약수의 합-Java ❓문제 [백준] 17425-약수의 합-Java 🖊️풀이법 DP를 이용하여 풀 수 있는 문제이다. 시간 제한이 1초이므로 일반적인 약수를 구하는 2중 for문을 사용할 시에는 100만 * 100만 으로 시간초과가 나게 된다. 따라서, 이번에는 시간 제한의 요건에 부합하기 위해서, 최적화를 진행해주어야 한다. 컨셉은 다음과 같다. 1. N의 최대값의 범위안에 있는 모든 소수들의 합을 구한다. 2. 구해진 소수의 합을 바탕으로 DP배열에 저장한다. 3. 저장된 DP의 값을 출력한다. 핵심 로직인 1번의 설명은 코드의 주석으로 설명 하도록 하겠다 :) 정답 코드 import java.io.*; import java.util.*; public class Main { public static void main(.. 2023. 10. 25. 9월 회고 9월 회고글을 11월이 거의 다되서야 쓴다... ㅎㅎ :) 프로젝트 프로토타입 구현 막바지여서.. 기능개발과 문서화가 바쁘다는 핑계로 이제서야 쓰는 것같다. 9월은 어땟는가?? 진짜 매일매일 하루에 6시간씩 프로젝트에 전념했던 것 같다. 그중에 가장 뿌듯했던 점은 :) Spring Data JPA와 Querydsl을 콤비의 강력한 쿼리최적화와 동적쿼리였다. 물론 직접적으로 내가 JPA만을 이용해서 쿼리문을 짠적은 없지만 JPA와 Querydsl 인프런 강의에서 경험해본 것과 같이 실제로 엄청나게 편리해서 생산성이 올라간 것같다. JPA만 사용한다면 -> JPQL을 직접짜고, 동적인 쿼리 구현하는데 매우 제한적이고 어렵다(컴파일링도 안되고, 오타잡아내기가 진짜 헬..) 그런데 Spring Data JPA .. 2023. 10. 20. JPA - CascadeType 옵션 JPA에서는 CascadeType은 연관관계된 객체간의 변화에 따라서 별도의 쿼리나 작업 없이도, 엔티티를 생성, 삭제, 변화등을 할 수 있는 기능이다. CascadeType의 옵션은 6가지 이다. CascadeType.ALL : 아래의 5가지를 모두 적용 CascadeType.PERSIST : 부모 엔티티에서 자식객체를 저장하면 자식 엔티티도 자동으로 DB에 저장된다. CascadeType.REMOVE: 부모 엔티티를 삭제하면 DB에서 부모 엔티티 뿐만아니라 자식 엔티티도 삭제된다. CascadeType.MERGE: 부모 엔티티와 자식 엔티티를 합친다. CascadeType.DETACH: 부모 엔티티와 자식 엔티티를 분리한다. CascadeType.REFRESH: 부모 엔티티를 새로고침한 경우, 자식 .. 2023. 9. 8. 7,8월 회고 그동안 바빠서(?) 회고 글을 두달치를 몰아서 쓴다.. 7월 인프런의 스프링 완전 정복 시리즈 및 JPA 학습 연초에 구매해둔 김영한님의 스프링 로드맵 강의 대부분을 사놨던게 진짜.. 신의 한수 였던 것 같다. 로드맵을 학습면서, 이전에 부트캠프에서 제대로 이해하지 못한(사실은 거의 이해하지 못했다..) 스프링을 왜 사용하는지 스프링이 어떻게 설계되어져 있는지 어떻게 스프링을 제대로 사용할 수 있는지에 대해서 배웠다. 학습하면서 한편으로는, 스프링에 적용되어있는 개념들이나, 디자인패턴들을 보면서, 내가 저런 것들을 구상하게 설계할 수 있을까.. 하는 마음도 들었다.. (어떻게 저렇게 추상화와 다형성을 이용해서, 프레임워크를 만들어냈는지... 왜 스프링이 가장 대중적인지.. 알게되었다.) 그리고 또한 백엔.. 2023. 9. 2. [백준] 12789-도키도키 간식드리미-Java ❓문제 [백준] 12789-도키도키 간식드리미-Java 🖊️풀이법 큐와 스택을 이용하면 간단하게 풀 수 있다. Queue의 선입 선출과 Stack의 후입 선출의 개념으로 풀어보자. 반복문 탈출조건 Queue와 Stack이 모두 비어있을 경우 Queue가 비어있고, Stack의 peek가 currentNum 이 아닌경우 로직 (순서 중요!) Queue의 peek가 currentNum인 경우 Queue.poll 후 currentNum +1 Stack의 peek가 currentNum인 경우 Stack.poll 후 currentNum +1 Queue의 peek가 currentNum이 아닌 경우, Queue.poll 이후 Queue에서 poll한 값을 Stack.push 각각의 로직을 수행한 후에는 continu.. 2023. 8. 30. 회원가입 기능구현 시 패스워드 인코딩은 어디서 해야할까? 이번 포스팅은, 프로젝트 초입 회원과 관련된 기능 구현에서 생긴 고민으로 작성하게 되었다. 회원가입 기능구현 시 회원의 비밀번호는 그대로 저장하면 안된다. 이유는 만약 DB가 노출되는 일이 발생한다면, 해당 비밀번호는 그대로 노출이 되고 이것은 치명적인 문제로 이어질 수 있다. 비밀번호와 마찬가지로 DB에 저장되는 모든 민감한 데이터들은 그대로 저장되어서는 안된다. 이와 같은 문제를 막기위해서, 비밀번호 혹은 민감한 정보들은 암호화를 거친 뒤 저장 되어야 한다. 웹 애플리케이션의 계층 구조에서는 크게 컨트롤러, 서비스, 도메인, 레포지토리 로 나뉜다. 각각의 계층은 각각의 책임을 가지고 역할을 수행한다. 그렇다면, 회원가입시 들어온 데이터를 Entity로 변환시켜서 DB로 저장하는 과정에서, 패스워드 인.. 2023. 8. 18. 이전 1 2 3 4 5 6 ··· 26 다음