나를 기록하다
article thumbnail
[백준 11866 파이썬(Python) / 자바(Java)] 요세푸스 문제 0
Algorithm/baekjoon 2023. 6. 28. 13:49

문제 접근 처음에 문제를 접하고, 큐를 사용한 문제 풀이와 인덱스와 pop을 활용한 문제 풀이 2가지를 생각해보았다. 1. 파이썬(Python) 1) index와 pop을 이용한 문제 풀이 n, k = map(int, input().split()) arr = [i for i in range(1, n + 1)] ans_arr = [] idx = k - 1 # 시작 인덱스를 K-1로 설정 while arr: # 인덱스가 배열의 길이를 초과하는 경우, 인덱스를 배열의 길이로 나눈 나머지로 조정 if idx >= len(arr): idx %= len(arr) remove_elem = arr.pop(idx) ans_arr.append(remove_elem) # 다음 시작 인덱스를 K-1만큼 증가 idx += k ..

article thumbnail
[TIL-9 / 230627] 프록시 - 즉시로딩과 지연로딩, 고아 객체
TIL 2023. 6. 27. 22:12

2. 즉시 로딩과 지연 로딩 단순히 member 정보만 사용하는 비즈니스 로직 member 클래스 @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; → 멤버 클래스만 db에서 조회한다는 뜻 JpaMain Member m = em.find(Member.class, member1.getId()); 결과 Hibernate: select member0_.MEMBER_ID as MEMBER_I1_3_0_, member0_.INSERT_MEMBER as INSERT_M2_3_0_, member0_.createdDate as createdD3_3_0_, member0_.UPDATE_MEMBER as UPDATE_M4_..

article thumbnail
[TIL-8 / 230623] JPA 프록시
TIL 2023. 6. 24. 15:23

1. 프록시 Member를 조회할 때 Team도 함께 조회해야 할까? 회원과 팀 함께 출력 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName()); } 회원만 출력 public void printUser(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.ge..

article thumbnail
[TIL-7 / 230622] JPA 다양한 연관관계 매핑과 고급매핑
TIL 2023. 6. 23. 11:58

5. 다대다 [N : N] 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없음. 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야함 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계 가능 사용방법 @ManyToMany 사용 @JoinTable로 연결 테이블 지정 다대다 매핑: 단방향, 양방향 가능 다대다 매핑의 한계 편리해보이지만 실무에서 사용X 연결 테이블이 단순히 연결만 하고 끝나지 않음 주문시간, 수량 같은 데이터가 들어올 수 있음 다대다 한계 극복 연결 테이블용 엔티티 추가(연결 테이블을 엔티티로 승격) @ManyToMany → @OneToMany, @ManyToOne 6. 실전 예제 - 3. 다양한 연관관계 매핑 배송, 카테고리 추가 - 엔티티 주문과 배송은 1:1(..

article thumbnail
[TIL-6 / 230621] JPA 다양한 연관관계 매핑
TIL 2023. 6. 21. 22:35

1. 연관관계 매핑시 고려사항 3가지 1) 다중성 다대일: @ManyToOne (가장 많이 사용) 일대다: @OneToMany (필요할 때 사용) 일대일: @OneToOne (가끔 사용) 다대다: @ManyToMany (실무에서 사용하지 않음) JPA의 어노테이션은 DB와 매핑하기 위해 존재. 애매할 때는 반대쪽을 생각하라. 회원과 팀의 관계가 헷갈리면, 팀과 회원의 관계를 생각하라. 2) 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 3) 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A→B, B→A 처럼 참조가 2군데 존재 객..

article thumbnail
[백준 1316 파이썬(python)/자바(java)] 그룹 단어 체커
Algorithm/baekjoon 2023. 6. 21. 19:24

1. 문제 접근 처음 이 문제를 보고 바로 풀지 못하였다. 정렬을 사용해야 하나? 라는 생각을 했지만, 정렬로는 떨어져서 나타나는 단어를 구할 수 없었기에 넘어갔고, 그 다음으로 입력을 배열의 형태로 받아서 각 단어를 비교하는 방법을 생각했지만, 그것 또한 아니었다. 그리고 생각한 결과, 문제는 의외로 간단하였다. 예를 들어, abcdef라는 단어가 있다고 가정하자. a와 b를 비교하여 두 단어가 다르다면, b부터 끝까지인 bcdef를 새로운 단어로 저장하고, bcdef 안에 a가 있는지를 확인하면 된다. 확인 후 a가 존재하지 않는다면 그룹 단어에 1을 더하고, a가 존재한다면 그 단어는 그룹 단어가 아닌 것이다. 2. Python n = int(input()) # 입력받을 문자의 개수 group_wo..

profile on loading

Loading...