전체 글 (71) 썸네일형 리스트형 [Java] 루프 비교 횟수 줄이기 (Feat. Relative Sort Array) 🧶 1122. Relative Sort Array 주어진 arr1를 arr2의 원소 순서에 따라 정렬하고 arr2에 없는 원소는 오름차순으로 넣어주는 문제다. 🧵 계획 세우고 풀이 1차 음 ~ 먼저 arr1을 Arrays.sort()로 정렬하고 새로운 배열에 arr1과 arr2 원소 같으면 new int[] result에 삽입하고 나머지 넣어주면 되겠군 ! public int[] relativeSortArray(int[] arr1, int[] arr2){ Arrays.sort(arr1); int[] result = new int[arr1.length]; for(int n1 = 0; n1 근데 이렇게 하면 나머지를 어떻게 넣을 건지...? 하다가 배열 몇 번.. [Java] 깊은 복사(deep copy) vs 얕은 복사(shallow copy) 🧶 학습 동기 leetcode 문제1929. Concatenation of Array 를 푸는 중 그러니까 nums 배열이 주어지면 결과 값에 nums가 두 번 반복 출력되도록 뽑아보아라 ~ 이런 문젠데 난 이렇게 풀었음 ㅋㅋㅋ 🧵 저는 이렇게 풀었는데요 class Solution { public int[] getConcatenation(int[] nums) { int count = nums.length; int[] result = new int[count * 2]; for(int i = 0; i 먼저 nums 갯수 만큼 새로운 int[] 배열을 만든 뒤 거기에 먼저 nums 숫자들을 넣고 ~ 그리고 그 배열 수 만큼 안에 숫자들을 한 번.. perfect dish | Refactoring (3) - 주문과 영수증 구현기 🍽 Perfect dish 개발 일지 이 글은 개발 여정을 기록한 것으로 틀린 내용이 나올 수 있습니다. 점점 고쳐나가기 때문이죠 ✴️ 요구사항이 부분에서 가장 중요한 건 테이블 별 주문이 병합되는 것, 그에 따라 합계가 계속 변경되는 것이다. 5번이나 수정한 사연 갑니다지금 생각해 보면 정말 웃기고 별거 아니다. 왜 그랬니? ✴️ 1차 설계참고로 이때는 jpa로 리빌딩 전이다. (무려 인메모리로 컬렉션만을 사용해서 플젝을 구현하고 있었음 ㅋㅋ 왜..?)주문을 할인 여부에 따라 바로 주문을 리스트로 담았다.menu -> menuBoard -> order메뉴는 isActive에 따라 menuBoard에 저장된다. 할인이다? 할인 리스트. 할인 아니다? 일반 주문 리스트. 또 이걸 모아서 menu.. perfect dish | Refactoring (2) - 이미지 처리 구현기 🍽 Perfect dish 개발 일지 이 글은 개발 여정을 기록한 것으로 틀린 내용이 나올 수 있습니다. 점점 고쳐나가기 때문이죠 ✴️ 요구사항관리자는 메뉴 등록 시 이미지를 함께 저장할 수 있습니다. ✴️ 우리가 이미지 저장 버튼을 누르면? 흐름을 생각해 보자 실제 파일을 등록 ⬇️원래의 파일 이름 / DB상 저장될 파일 이름(중복 이름 방지) 생성 ⬇️파일이 실제로 저장될 경로 찾기 ⬇️그 경로에 저장 이제 메뉴를 클릭하면 -> 테이블에 함께 저장된 서버상 저장된 파일 이름으로 해당 이미지를 찾아온다. ✴️ 그럼 여기서 서버에 저장될 파일 이름은 어떻게 만들 것인가? 떠오르는 방법은 두 가지다.1. 저장시점 날짜 + 원래 파일 이름 + 확장자2. UUID + 원래 파일 이름 + 확장자 .. perfect dish | Refactoring (1) - 요구 사항이 계속 변경 되면 말이지요 🍽 Perfect dish 개발 일지 이 글은 개발 여정을 기록한 것으로 틀린 내용이 나올 수 있습니다. 점점 고쳐나가기 때문이죠 요구사항을 모두 구현하고 테스트까지 마쳤다. 오늘부터 리팩토링에 들어간다. controller에 ResponseEntity로 상태코드 , 응답헤더와 본문을 보내어 postman으로 확인하려 한다. 💡 회원 가입 시나리오 - 이 로직은 어떤 계층에 있어야 하는가 기능을 개발할 때는 db와 직접적으로 상호작용을 하는가? 사용자 요청 처리를 하는가? 이 둘로 나누었다. 회원가입을 하려면 1. 이름 검증 ㄴ 중복 ? 010을 제외한 휴대전화 번호 8 자리 입력 및 검증 ㄴ 중복? throw 사용자정의 에러코드와 메시지 2. 회원으로 등록 완료 + status : ACTIVE 현재 r.. perfect dish | 이거 만들어볼까? (8) - 돈(Money)타입과 주문 플로우 🍽 Perfect dish 개발 일지 이 글은 개발 여정을 기록한 것으로 틀린 내용이 나올 수 있습니다. 점점 고쳐나가기 때문이죠 💡 타입을 통일할 것인가 리소스를 챙길 것인가 메뉴의 갯수는 int , 가격은 Null이 있을 수 있어서 Integer, 계산은 추후에 소수점 연산이 필요할 수 있으므로 정밀한 타입 BigDecimal 이렇게 하기로 했다. 근데 만약에 타입을 통일하면? 타입 컨버터 같은 걸 만들지 않아도 되니까 ^^... 헤헤 관리하기 쉬울 거 같았다. 그래서 무조건 돈 관련 타입을 BigDecimal로 ...? 😀 우리(나)가 살펴야 할 것은 타입을 통일한다면 정확성을 보장하겠지만 ~ 우린 토이 프로젝트니까 리소스최적화를 위해 BigDecimal은 최소한으로 사용하기로 하자. 💡 최종 주문.. perfect dish | 이거 만들어볼까? (7) - 테스트와 Flag 추가 🍽 Perfect dish 개발 일지 이 글은 개발 여정을 기록한 것으로 틀린 내용이 나올 수 있습니다. 점점 고쳐나가기 때문이죠 💡 Service layer에서 domain을 직접 주입받게 생겼네요 요구사항 중에 MenuBoard에서 commonMenus와 discountMenus에서 메뉴를 가져와 Order에서 주문을 생성하여야 한다. 메뉴보드의 ㅇ메뉴가 계속해서 바뀔 수 있으므로 그렇다면 어떤 방법으로 Order에서 MenuBoard에 접근하면 좋을까? 처음에 이걸 생각했다. 메뉴 보드의 주문 가능한 리스트를 받아와야 하는데 그걸 받아오려고 repository 계층인데 domain 계층인 menuBoard를 주입받는다? 그리고 commonMenus와 discountMenus를 따로 가지고 와야 한다.. perfect dish | 이거 만들어볼까? (6) - 메뉴 보드와 책임 분리 🍽 Perfect dish 개발 일지 이 글은 개발 여정을 기록한 것으로 틀린 내용이 나올 수 있습니다. 점점 고쳐나가기 때문이죠 💡 메뉴와 메뉴 보드, 그들의 관계 (응집도와 결합도) 메뉴 파트를 다 만들고 메뉴 보드라는 도메인을 만드는 중에 이런 고민이 생겼다. 메뉴를 모아서 메뉴 보드를 만드는 건데 굳이 별도로 만들어 관리하는 거보다 그냥 메뉴 안에 ArrayList로 만드는 게 낫지 않을까...? 이런 생각을 한 이유는 지금 시점에서 메뉴 보드에 들어갈 필드가 List menus; 하나였기 때문이다. 그리고 dto의 역할을 하는 request와 response 도 메뉴 리스트 하나를 넘겨줄 뿐인데, 그냥 ArrayList 필드 하나 넣고 createMenus 메서드를 Menu 클래스에 두는 게 더.. 이전 1 2 3 4 ··· 9 다음