TIL
TIL_20230329
번잔중
2023. 3. 29. 23:58
오늘 할 일
- LeetCode 데일리 문제 풀기
- 프로젝트 - 회원 정보 수정시 프로필 이미지 삭제되는 경우 DB 미반영 이슈 처리하기
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 1402. Reducing Dishes(https://leetcode.com/problems/reducing-dishes/)
- 문제 조건
- n개의 음식의 만족도에 대한 데이터를 모아야 한다. 음식은 시간의 단위 하나 안에 만들 수 있다.
- 음식의 만족 시간 계수는 이전 요리를 포함하여 음식을 하는 데 소요된 시간에 만족도를 곱한 값이다. ex. time[i] * satisfaction[i]
- 음식 준비 후부터 얻을 수 있는 만족 시간 계수의 최대합을 반환해라.
- 특정 주문 내에 있는 음식들은 준비될 수 있고 쉐프가 이 최대값을 얻기 위해 일부 음식을 버릴 수 있다.
- 문제 해결 과정
- satisfaction 배열을 오름차순으로 정렬한다.
- satisfaction을 편의상 리스트로 만들어주고, 1~n까지의 값을 저장하는 리스트도 만들어준다.
- 그 후, satList가 빈 리스트가 될 때까지 satList에서는 맨 앞에 위치한 값(최소값)을, index에서는 맨 뒤에 위치한 값(n번째 숫자)을 remove()해주면서 같은 자리에 위치한 값끼리 곱한 값을 더해준다. 이 과정에서 ans에는 기존 ans와 새로 구한 값의 대소비교를 통해 큰 값을 저장한다.
프로젝트 - 회원 정보 수정시 프로필 이미지 삭제되는 경우 DB 미반영 이슈 처리하기
- 우선 Spring JPA로 DB를 관리하고 있고, 프로필 이미지와 회원은 1대1 관계입니다.
- 왜 안되는지 이유를 생각해보고 검색해보면서 원인을 파악했습니다. 원인은 연관관계 매핑 때문이었습니다. 연관관계가 성립하는 경우 부모 역할을 하는 테이블과 자식 역할을 하는 테이블이 생기게 되는데, 제가 작성한 코드에서는 회원이 부모, 프로필 이미지가 자식입니다.
- 회원 - 프로필 이미지가 1대1 관계인 이유는 회원 한 명당 프로필 이미지는 하나만 설정할 수 있기 때문입니다.
- 연관관계를 맺은 관계에서는 단순 삭제가 불가능합니다. 그 이유는 특정 테이블(Repository)에서 삭제하는 메소드를 사용한다고 해도 연관관계가 끊어지지 않은 상태라면 삭제 연산이 동작하지 않기 때문입니다.
- 그래서 회원 엔티티에 있는 프로필 이미지와 연관관계를 끊어준 다음 DB에서 삭제 연산을 하자 성공했습니다. ㅎㅎㅎㅎ
- 쏴리 질러~!
느낀점
- 리트코드 문제를 어렵게 풀어내고 나서 최적화된 다른 코드를 보면 정말 잘하는 분들이 많다고 느낍니다. 제 코드는 그저 보이는 대로 작성한 코드라면 다른 분들 코드는 뭔가... 깊이 고민해본 코드 같다는 느낌이 드네요! 그런 코드들도 공부하면서 실력을 늘려보고 싶습니다!
- 잠깐 잠깐 고민하다가 시도 해봤을 때, 문제가 해결되는 그 쾌감이 찐합니다. 그 맛에 다들 개발을 하시나봐요!
- 어제 못다한 헬스장 등록을 하고 간만에 운동을 했습니다! 간만에 몸이 깨어나는 느낌이네요. ㅎㅎㅎ
내일 할 일
- 2023년 2분기 계획 짜기