본문 바로가기
728x90

분류 전체보기183

JPA Entity에서 @Setter 사용을 지양하는 이유? @Setter을 사용할 경우 사용 의도/목적이 불분명하다.(Insert 인지 Update 인지) 변수의 값을 Set 하는 과정에서 이 행위 자체가 insert를 위한 동작인지 update를 위한 동작인지 불분명하다. book.setTitle("JPA 사용법"); book.setContent("JPA의 구현체"); book.setNum("12") 위 코드를 보면 이게.. 인스턴스를 새로 만드는건가..? 아님 기존에 있던 값을 변경하려는 건가..? 싶을 것이다. 건들면 안되는 값을 건들 수 있다. (by. 착오) setter 메서드는 public으로 선언하기에 메서드 사용이 자유롭다. 그렇기에 의도하지 않은 곳에서 접근하여 값을 재 설정하거나 하면 일관성이 깨지는 문제가 발생. setter 대신 생성자에 @.. 2023. 9. 1.
초보자도 이해할 수 있는 JPA, Hibernate, Spring Data JPA의 차이점 JPA란? 자바 어플리케이션에서 RDB(관계형 데이터베이스를) 어떻게 사용하는지에 대한 가이드라인! 무슨 특정 기능을 하는 친구가 아니라 말그대로 구현이 안 되어 있는 인터페이스만 있는 상태! ex) 가솔린 자동차 설계도 JPA를 왜 쓰는 거에요? 객체 지향적 코딩과 관계형 데이터베이스의 패러다임을 맞춰 주기 위해 사용. 객체 지향적 코딩을 우선시 하면, 데이터베이스를 다루기 위한 sql문으로의 전환이 쉽지 않다. 그렇다고 객체 지향적 코딩을 포기하면 유지 보수의 어려움 등의 단점이 있기에 딜레마에 빠진다. 이를 해결하기위해 ORM 기술이 탄생. JPA를 사용하면 내부에서 JDBC를 통해 데이터베이스와의 매핑을 도와줌 Hibernate란? JPA가 인터페이스라면, Hibernate는 그 인터페이스를 응용.. 2023. 8. 30.
[백준/BOJ] - 1107번 python 풀이 - 브루트포스 처음 나의 풀이법 문제를 보고 처음 떠오른 방법이 가능한 숫자를 가지고 목표 채널에 근접하는 방법. 만약 목표 채널이 5457이라면 일단 각 자릿수가 일치하는지 먼저 확인, 일치 하지 않다면 절댓값 1만큼 차이나게 수를 뽑으며 각 자리수 별로 가능한 경우의 수 집합을 만든다.(5457의 맨 첫자리인 5를 기준으로 4 or 6이 있다면 4와6을 set에 집어 넣는다.) 이런식으로 하면 집합이 자릿수 개수 만큼 총 4가지가 생길 것이다. 해당 집합에서 하나씩 값을 골라 순열을 진행하는 방식으로 하면 될거라 생각했으나 순열은 같은 수를 여러번 뽑는 경우를 생각하지 못한다. 최종 풀이법 그렇기에 다른 분의 풀이를 참고하여 브루트포스 방식으로 모든 경우의 수를 훑는다. 코드 부분에 반복 횟수가 1,000,001로.. 2023. 8. 22.
[백준/BOJ] - 16928번 python 풀이 - bfs https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 1부터 시작하여 bfs로 주사위 수인 1~6 만큼 이동하여 100에 최소 횟수만큼 도달하려면? 처음 생각난 방법이 dp와 그래프 탐색이다. 그래프 탐색 방법 중 dfs를 사용하면 100에 도달하는 경우의 수가 여러개 나오는데 그 많은 경우의 수 중 주사위 시도 횟수가 가장 작은 값을 구하기 위해 매번 비교를 해야한다. 하지만, bfs를 사용하여 방문하.. 2023. 8. 21.
[백준/BOJ] - 14500번 python 풀이 - dfs 다음 이미지 형태의 도형에 부합하는 값들의 합 - 최댓값을 도출하는 문제이다. 순간 이 문제를 봤을 때 dfs를 활용하면 될 거 같다는 생각이 들었다. 하지만 코드를 완전히 작성하고 난 후, 테스트 케이스를 돌려보니 기댓값과 다른 값이 출력되었다. 문제를 생각해보니,'ㅜ' 모양의 도형은 단순 dfs로는 해결이 안되는 것. 나머지 도형의 유형은 모두 dfs로 해결 되지만, 유일하게 'ㅜ' 모양만 체크가 불가하다. 이를 해결하기 위해 새로운 함수를 만들어 'ㅜ' 모양만 예외처리 해주었다. 반복문을 활용한다고 가정했을 때, 총 나올 수 있는 형태는 4가지. ㅗ, ㅏ , ㅜ ㅓ 이다. 기준점 하나를 잡았으면, 해당 기준점 당 4가지의 경우의 수가 나올 수 있다는 점. 또한, 각 도형의 모형 별로 반복문 3번을 .. 2023. 8. 21.
[백준/BOJ] - 2096번 python 풀이 - dp https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 맨처음 각각 최댓값, 최솟값을 저장하는 dp1, dp2 2가지를 deepcop를 통해 만들었더니 메모리 초과가 발생하여 파훼법을 생각해보니 굳이 쓰지 않는 값을 dp에 저장하지 않고 그냥 덮어쓰는 방식으로 진행해도 될 거 같다는 판단이 들었다. import sys,copy input = sys.stdin.readline n = int(input()) arr = [] dp = copy.deepcopy(arr) d.. 2023. 8. 20.
728x90