전체 글

중요한 것은 꺾여도 그냥 하는 마음
https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 풀이 사용한 알고리즘 : 누적합(Prefix Sum) 풀이전략 1. 입력한 값들의 누적합을 새로운 배열에 저장한다. 2. 문제에서 구하는 최대의 꿀양이 나올 수 있는 경우는 아래의 세가지 중 하나의 경우이다. 1) 벌 벌 꿀통 좌측의 벌은 항상 배열의 최좌측에 위치, 꿀통은 배열의 최우측에 위치한다. 중간의 벌을 이동시키며 가질 수 있는 최대 꿀양을 알아낸다. 2) 꿀통 벌 벌 꿀통은 항상 배열의 최좌측에 위치, 우측의 벌은 배열의 최우측에 위치한다. 중간의 벌을 이동시키며 가질 수 있는 최대 꿀양을 알아낸다. 3) 벌 꿀통 벌 좌측의 ..
Redux란? props 없이 state를 공유할 수 있도록 도와주는 라이브러리다. 하나의 js 파일에 state를 보관하고, 모든 컴포넌트들이 state를 직접 꺼내쓸 수 있다. Redux 설치 npm install @reduxjs/toolkit react-redux 터미널에 위 명령어를 실행시킨다. 주의사항 package.json 파일에서 react와 react-dom이 18.1.0 버전 이상이어야 문제없이 설치가 가능하다. 만약 보다 낮으면, 직접 파일 수정하면 된다. Redux 파일 생성 import { configureStore } from "@reduxjs/toolkit"; export default configureStore({ reducer: { } }) state를 보관할 js 파일을 만..
https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 풀이 사용한 알고리즘 : DP, LCS(Longest Common Subsequence) 풀이전략 1. 주어진 두 문자열 길이에 맞게 이차원 배열을 선언한다. int d[][] = new d[두번째문자열.length()+1][첫번째문자열.length()+1] 2. 문자열에서 동일한 문자가 있을 경우 D[i+1][j+1]=D[i][j]+1 문자열에서 동일..
https://www.acmicpc.net/problem/2688 2688번: 줄어들지 않아 첫째 줄에 테스트 케이스의 개수 T(1
· JPA
영속성 전이(CASCADE) 아래 코드들은 영속성 전이가 적용되지 않은 부모 엔티티와 자식 엔티티, 그리고 이를 활용한 비지니스 메소드들이 구현된 main 클래스이다. 부모 엔티티 @Entity @Getter @Setter public class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "parent") private List childList = new ArrayList(); public void addChild(Child child){ childList.add(child); child.setParent(this); } } Child 엔티티와 OneToMany를 어노테이션을 통해 연관되..
· JPA
em.find()와 em.getReference() 차이는? em.find는 데이터베이스를 통해 실제 엔티티 객체를 조회한것 이고 em.getReference()는 프록시에서 값을 조회하는 것으로 프록시에 없는 값을 조회할 때까지 데이터베이스 조회를 미룬다. 프록시 특징 - 실제 클래스를 상속 받아서 만들어짐 - 실제 클래스와 겉 모양이 같음 - 사용하는 입장에서 진짜 객체인지 프록시 객체인지 구분하지 않고 사용 가능 - 프록시 객체는 현재 자신이 갖고 있지 않은 데이터에 접근해야 할 때, 처음 한 번만 초기화 한다. - 프록시 객체를 초기화 할때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님 - 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능 - 프록시 객체는 원본 엔티티를 상속받음, 따라서..
· JPA
기존 테이블 방식의 연관 관계 //팀 저장 Team team = new Team(); team.setName("TeamA"); em.persist(team); //회원 저장 Member member = new Member(); member.setName("member1"); member.setTeamId(team.getId()); em.persist(member) //조회 Member findMember = em.find(Member.class, member.getId()); //연관관계가 없음 Team findTeam = em.find(Team.class, team.getId()); Member가 하나의 팀에 가입할 수 있을 때, Member가 특정 팀에 가입하기 위해서는 위와같이 teamID를 통해서..
https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 풀이 사용한 알고리즘 : 스택 풀이전략 1. 탑의 높이 입력이 들어올 때마다 입력 값이 stack의 top에 저장된 값보다 크면, 기존 stack에서 top 원소가 더 큰게 있을 때까지 pop하고 입력 값이 stack의 top에 저장된 값보다 작으면, stack의 top 인덱스를 resut에 저장하고 기존 stack의 원소들을 유지한다. 2. stack에 현재 입력값을 push 하고 1번 과정을..
https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 풀이 사용한 알고리즘 : DFS 풀이전략 싸이클이 발생하는 노드들을 모아 오름차순으로 출력해주면 되는 문제다. 1. DFS를 통해 각 노드마다 싸이클이 발생하는지 판단한다. - DFS 탐색 중, 탐색의 첫 번째 노드와 동일한 노드로 탐색을 하게 되면 싸이클이다. 2. 싸이클이 발생하면 탐색과정의 모든 노드 번호들을 TreeSet에 삽입한다. 3. 첫번째 노드부터 마지막 노드까지 2번 ..
· JPA
@Column - name : 필드와 매핑할 테이블의 컬럼 이름 [Default : 객체의 필드 이름] - insertable, updateable : 등록, 변경 가능 여부 [Default : true] - nullable(DDL) : null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. [Default : true] - unique(DDL) : @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다. [Default : false] (하지만 Column에서의 unique 제약은 값에 이상한 값이 들어가기 때문에 잘 사용 안함) - columnDefinition(DDL) : 데이터베이스 컬럼 ..
째로스
개발일지