전체 글 81

항해 플러스 백엔드 (3주차 WIL)

3주차 WIL 3주차 KPT를 정리합니다.   1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제) 요구사항E-Commerce 시스템 분석 및 설계시퀀스 다이어그램, ERD, 프로젝트 마일스톤 등 기초 산출물 작성 이번주차부터는 이어지는 과제로 분석 - 설계 - 구현의 순서대로 진행이 되는 것 같습니다. 첫 주차는 앞으로 만들 E-commerce 시스템에 대한 설계 부분으로어떤 기술을 채택하는지, 패키지 구조는 어떻게 가져가는지 등 전반적인 구조를 잡습니다. 시퀀스 다이어그램이나 API 명세 작성을 실무에서는 많이 안해봐서 어려움을 좀 겪었습니다. 2. 시도 일반 워드, 엑셀, PPT로만 산출물을 작성해봤지 readme.md 등에 작성하고공유하기 위한 "실용성있는" 산출물은 작성해보지 못했습..

개발/항해99 2024.10.12

항해 플러스 백엔드 (2주차 WIL)

2주차 WIL 2주차 KPT를 정리합니다.    1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제) 요구사항아키텍처 준수를 위한 애프리케이션 패키지 설계동시성을 고려한 특강 조회 및 신청 API 서버 구현 1주차와 마찬가지로 단순 기능 구현에 대한 어려움은 없었습니다. 하지만 다른 온라인 강의를 통해 보기좋은 패키지 설계에 대해 살짝만 알았을 뿐DIP와 OCP를 준수하기 위한 노력은 하지 안았기에 구조 자체를 잡게 너무 어려웠습니다. 또한 이전엔 애플리케이션단에서의 Lock을 구현했다면, 다중 인스턴스에서의 동시성 제어를 위해DB Lock과 Redis를 사용했는데 둘 다 고민을 크게 하지 않고 사용했던터라 어려움을 많이 겪었습니다. 2. 시도 공개 Q&A에서 힌트를 얻어 다음과 같이 패키지..

개발/항해99 2024.10.09

항해 플러스 백엔드 (1주차 WIL)

1주차 WIL 9월 21일 항해 플러스를 시작으로 1주간의 KPT를 정리합니다.    1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제) PointService를 정상 동작하게 구현하는 Default 과제는 어렵지 않게 해결했습니다. 이후 Step1~Step2인 동시성 제어에서 다뤄본 적이 없었기에 어떠한 방법을 사용해야 하는지전혀 감이 오지 않았습니다. 공개 Q&A 덕분에 ConcurrentHashMap과 Lock에 대한 Keyword를 얻었지만동시성, 순차성 등 용어의 혼선으로 실패만 되는 테스트 케이스에 부딪혔습니다. 2. 시도 처음엔 UserId와 UserPoint 객체를 가지는 ConcurrentHashMap만을 사용하여 로직을 구현하였습니다. 하지만 이는 순차성을 보장할 순 없었..

개발/항해99 2024.09.28

백엔드 6기 WIL (시작하는 마음)

지금까지의 회고당연히 핑계겠지만 개발에 대한 욕심만 있고 SI 특성상 성장하기 힘든 환경탓만 해왔습니다. 정말 성장하고 싶지만 전공자도 아니고, 주변에 도움을 받을 수 있는 사람도 없기에 항상 "어떻게?"가 저의 발목을 붙잡았고 그 핑계로 일만 열심히 하는 성실한 노예가 되었습니다. 성실한 노예가 된 덕분에 회사에서의 인정과 작은 규모의 기업에서는 드문 파격적인 연봉 인상도 받았습니다. 그렇게 1년이 지난 지금 사내 에이스라는 정말 작은 우물안에 갇혀 폐사 직전의 왕자 개구리가 되었습니다. 항해플러스 참여 계기그러던 와중 우연히 광고 배너를 통해 항해99 알고리즘 스터디에 참여하게 되었고 성장에 대한 방향성을 몰라 그저 제자리에 서있던 저에게 아주 큰 동기부여가 되었고 40일간 TIL 전부 제출, 알고리..

개발/공부 2024.09.21

99클럽 코테 스터디 40일차 TIL + Greedy(Optimal Partition of String)

오늘의 과제리트코드 medium으로 분류된 Optimal Partition of String 입니다. 이번 유형은 그리디 입니다.문제https://leetcode.com/problems/optimal-partition-of-string/description/ 먼저 문제 요구사항 요약입니다. 문자열이 주어질 때 각 문자가 하나의 파티션에 최대 한 번씩만 등장하도록 파티션을 나눈 후 파티션의 개수를 반환하는 문제입니다. 먼저 살펴보아야 할 부분은 각 파티션에 문자가 중복되지 않게 어떻게 나누는가? 입니다. 문제의 유형이 그리디인만큼 매번 최선의 선택을 해야 하는데 제약 조건인 "문자가 중복되지 않는다"에 포커스를 맞추면 매우 쉽게 풀 수 있습니다. 문자열이 주어지면 contains를 통해 중복 여부를 확인하..

99클럽 코테 스터디 39일차 TIL + Heap(Reduce Array Size to The Half)

오늘의 과제리트코드 medium으로 분류된 Reduce Array Size to The Half 입니다. 이번 유형은 힙 입니다.문제https://leetcode.com/problems/reduce-array-size-to-the-half/description/ 먼저 문제 요구사항 요약입니다. 배열이 주어질 때 크기를 절반 이하로 줄이기 위해 제거해야 할 최소 요소 수를 반환하는 문제입니다. 요소를 최소한으로 줄이기 위해 가장 많이 중복되는 요소를 먼저 찾습니다.// 빈도수 계산Map freqMap = new HashMap();for (int num : arr) { freqMap.put(num, freqMap.getOrDefault(num, 0) + 1);} 문제의 예시인 {3, 3, 3, 3, 5..

99클럽 코테 스터디 38일차 TIL + Heap(Seat Reservation Manager)

오늘의 과제리트코드 medium으로 분류된 Seat Reservation Manager 입니다. 이번 유형은 힙 입니다.문제https://leetcode.com/problems/seat-reservation-manager/description/  먼저 문제 요구사항 요약입니다. 좌석 예약 프로그램을 디자인합니다. 초기화 함수, 예약, 예약 취소 함수를 구현하면 되는데 예약시에는 가장 낮은 번호의 좌석 번호 순서대로 숫자를 반환합니다. 자료구조로서 힙은 최소 힙 혹은 최대 힙을 사용할텐데 문제의 요건을 보면 "가장 낮은 번호 순서대로" 좌석을 예약한다라고 나와있으니 최소 힙으로 사용하도록 하겠습니다. 이전 문제에서 사용했던 우선순위 큐를 사용할텐데 초기화시 정렬 순서에 따라 정렬된 값을 반환해주는 특성을 ..

99클럽 코테 스터디 37일차 TIL + 스택/큐(Minimum Add to Make Parentheses Valid)

오늘의 과제리트코드 medium으로 분류된 Minimum Add to Make Parentheses Valid 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/description/  먼저 문제 요구사항 요약입니다. 짝이 맞거나 맞지 않은 괄호가 주어질 때 삽입이나 이동을 통해 온전한 괄호를 만들 수 있는 최소 이동 횟수를 반환하면 됩니다. 문제의 분류가 스택이고 스택 단골 문제인 괄호가 나왔으니 스무스하게 풀어주면 됩니다. 스택 기초 문제로는 짝이 맞는 문자열이라면 true, 맞지 않는다면 false를 반환하는 문제에서 조~금 심화 문제인데 기존의 공식과 똑같이 진행하면 됩니다. 먼저 (를..

99클럽 코테 스터디 36일차 TIL + 스택/큐(Removing Stars From a String)

오늘의 과제리트코드 medium으로 분류된 Removing Stars From a String 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/removing-stars-from-a-string/description/  먼저 문제 요구사항 요약입니다. 문자열이 주어지고 문자중 *를 만나면 왼쪽에서 가장 가까운 문자와 함께 *도 제거 후 반환하면 됩니다. 괄호 짝 맞추기와 같이 전형적인 스택 문제입니다. 후입선출의 자료구조 특성을 이용하여 문자를 계속 담다가 *를 만날때만 pop을 통해 문자를 제거해주면 되는 아주 간단한 문제입니다. 코드입니다.class Solution { public String removeStars(String s) { ..

99클럽 코테 스터디 35일차 TIL + 스택/큐(Flatten Nested List Iterator)

오늘의 과제리트코드 medium으로 분류된 Flatten Nested List Iterator 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/flatten-nested-list-iterator/description/  먼저 문제 요구사항 요약입니다. 중첩 가능한 리스트가 주어집니다. 다음 요소를 반환하는 next(), 다음 요소가 있는지를 반한하는 hasNext() 함수를 구현하면 됩니다. 일단 문제의 힌트에 맞게 스택/큐를 사용하여 접근했습니다. 처음 주어지는 nestedList내 요소가 숫자인지, 중첩 List인지 알 수 없기 때문에 일단은 스택에 모두 넣어놓고 숫자면 pop, 아니면 해당 리스트 내 요소를 push하는 방법으로 풀이를 진행했습니다. 먼..