목록전체 글 (168)
HyeLog
🙋♀️ 문제 https://www.acmicpc.net/problem/14395 14395번: 4연산 첫째 줄에 정수 s를 t로 바꾸는 방법을 출력한다. s와 t가 같은 경우에는 0을, 바꿀 수 없는 경우에는 -1을 출력한다. 가능한 방법이 여러 가지라면, 사전 순으로 앞서는 것을 출력한다. 연산의 아 www.acmicpc.net 🧩 알고리즘 최소 횟수를 구하는 문제이므로 BFS 알고리즘 정점: 정수 간선: 정수 → 정수 💡 아이디어 이 문제는 BFS로 최소 횟수가 되는 경로를 구해야 한다. 따라서, 큐에 정점만 넣는 것이 아니라, string형으로 경로까지 넣는다. 정점 방문 여부를 체크하기 위해서 set을 사용했다. 👩💻 코드 #include #include #include #include #in..
🙋♀️ 문제 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 🧩 알고리즘 최소(최단)를 구하는 문제가 아니므로 BFS, DFS 둘다 사용 가능 (나는 BFS로 풀었다.) 정점: 크기가 N×N인 그리드의 각 칸 간선: 칸 → 칸 💡 아이디어 -이동 가능한 정점인지 체크하는 함수를 따로 구현. -적록색약인 사람을 위한 함수, 아닌 사람을 위한 함수 2개를 따로 만드는 것이 아니라 하나의 함수로 처리. (매개변수로 적록색약 여부 전달) -구..
🙋♀️ 문제 https://www.acmicpc.net/problem/1963 1963번: 소수 경로 소수를 유난히도 좋아하는 창영이는 게임 아이디 비밀번호를 4자리 ‘소수’로 정해놓았다. 어느 날 창영이는 친한 친구와 대화를 나누었는데: “이제 슬슬 비번 바꿀 때도 됐잖아” “응 지금 www.acmicpc.net 🧩 알고리즘 ✔️모든 정점 방문, 최소 횟수 구하기 → BFS 알고리즘 정점: 수 간선: 수 → 수 (가중치 = 1) ✔️소수 구하기→ 에라토스테네스의 체 💡 아이디어 -테스트케이스마다 BFS 진행. -소수 판별 배열, 방문 여부 배열, 횟수 저장 배열을 활용. -수의 한 자릿수만 바꾸기 → 수를 string으로 바꿔서 진행. (to_string(), stoi()) 👩💻 코드 #includ..
🙋♀️ 문제 https://www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌은 세 개의 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려 www.acmicpc.net 🧩 알고리즘 DFS / BFS 알고리즘 둘다 사용 가능 (이번에는 DFS로 풀어봤다.) 💡 아이디어 정점: (a,b,c) = 돌의 개수 상태 간선: (a,b,c) → (a´,b´,c´) = 한 단계에서 돌의 이동 전체 돌의 개수는 변하지 않는다는 점을 이용해서 공간복잡도를 줄인다. (dfs 함수의 매개변수로 2개의 돌 그룹만 필요) 👩💻 코드 #include using nam..

🌠 값 타입 JPA의 데이터 타입 분류 엔티티 타입 (@Entity로 정의하는 객체 → 데이터가 변해도 식별자로 지속해서 추적 가능) 값 타입 값 타입 분류 기본값 타입 (Ex. int, double, Integer, Long, String, ···) 임베디드 타입 (복합 값 타입 → 직접 정의 가능) 컬렉션 값 타입 (Ex. Set, List, ···) 🌠 임베디드 타입 임베디드 타입은 새로운 값 타입을 직접 정의할 수 있다. 주로 기본 값 타입을 모아서 만들기 때문에 '복합 값 타입'이라고도 한다. 임베디드 타입은 int, String과 같은 '값 타입'으로써 엔티티가 아니고, 한번 값을 변경하면 추적이 불가능하다. 임베디드 타입은 언제 사용할까? DB의 회원 테이블에 근무 시작일, 근무 종료일, 주..
👩👧👦 영속성 전이(CASCADE) 개념 부모 : 자식 = 1 : N 관계이고, 양방향 매핑을 사용할 때 코드를 살펴보자. - 부모(Parent) @Entity public class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany(mappedBy = "parent") private List childList = new ArrayList(); public void addChild(Child child) { // 연관관계 편의 메소드 this.childList.add(child); child.setParent(this); } // 기본생성자, get..

👩💻 즉시 로딩과 지연 로딩 💡지연 로딩(프록시)의 필요성 회원 : 팀 = N : 1 관계에서는 아래와 같이 Member 엔티티에 @ManyToOne 으로 Team 필드가 들어가게 된다. @Entity public class Member extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; } 이때, 멤버를 조회해보면 팀까지 조회되는 것을 볼 ..

@MappedSuperclass 란? @MappedSuperclass 는 공통 매핑 정보가 필요할 때 사용한다. 예를 들어, 거의 모든 테이블에 등록자, 등록일, 수정자, 수정일(createdBy, createdDate, modifiedBy, modifiedDate) 컬럼이 필요하다. 이 공통 컬럼들만 모아서 따로 하나의 클래스를 만들고 @MappedSuperclass 어노테이션을 붙이면, 각 테이블마다 공통 컬럼들이 생기게 된다. 이때 중요한 사실은 @MappedSuperclass 는 상속관계 매핑이 아니라는 점이다. 단순히 공통된 매핑정보를 묶기 위해서 사용한다. 따라서, 해당 클래스는 테이블이 만들어지지 않는다. 그래서 추상 클래스로 만드는 것을 권장한다. 코드를 보면, BaseEntity 클래스에..