반응형

항해99 35

WIL 4주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?-> 대기열 구현이 가장 어려웠던 것 같습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?-> 대기열 구현을 위해 처음에는 수동으로 대기열을 확인하는 API를 풀링으로 호출할 때 마다 대기열 순서대로 활성화를 시키려고 했습니다. 다만, 이 방법을 사용하면 풀링을 하지 않으면 계속 활성화 할 수 있는 공간이 남아서, 문제가 발생할 수 있다는 걸 알았습니다.해결문제를 어떻게 해결하셨나요?-> 스케줄러를 사용해보기로 하였습니다. 정해진 시각마다 순차적으로 대기열에서 활성화열로 옮기는 작업을 진행하였습니다. 그러면 풀링을 하지 않아도 계속해서 빈자리가 발생할 때 마다 토큰을 활성화 시키게 됩니다.  @Component@RequiredArgsConstructo..

카테고리 없음 2024.07.15

WIL 3주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?-> 시퀀스 다이어그램과 DB 설계가 가장 어려웠습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?-> 시퀀스 다이어그램에서 주체의 단위를 도메인별로 설정하고 진행하였습니다.또한 DB 설계를 할때 어디까지 정규화와 반정규화를 할지 다른 사람들 설계한 것도 참고하고, 코치님들의 발제 Q&A도 한번 더 녹화본으로 보았습니다.해결문제를 어떻게 해결하셨나요?-> 코치님이 올려주신 시퀀스 다이어그램 작성 예시를 보고 도메인 관점으로 작성을 하였습니다.    시퀀스 다이어그램을 작성할 때 중요한 점은 디자이너나 코드를 모르는 사람도 보고 알아볼 수 있게 쉽게 작성이 되야 한다는 점입니다.DB ERD 설계를 할 때는 어디까지 정규화를 하고, 반정규화를 할지가 정말..

WIL 2주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?-> 이번 주차에서 제일 힘들었던 것은 클린 아키텍처를 적용해보는 것이었습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?-> 인프라 레이어가 도메인 레이어를 바라보도록 DIP를 적용시켰습니다.해결문제를 어떻게 해결하셨나요?-> 먼저 패키지 구조를 3개로 나누었습니다. 이렇게 나눈 이유는 Domain Layer를 중심으로 레이어 계층간의 간섭이 이뤄줘야 클린 아키텍처가 적용이 되기 때문입니다. 또한 계층간에 간섭이 일어나지 않도록 Presentation 레이어와 Domain 레이어에 각각 DTO를 만들어서 하위모듈이 상위모듈을 참조하지 않게 만들었습니다.  LectureServicepackage com.hhplus.clean.lecture.domain..

99클럽 코테 스터디 30일차 TIL, Stack(Removing Stars From a String)

1. 문제 정의2. 문제 접근*가 나올때마다 stack에서 제거해주면 될 것 같다.3. 문제 풀이string 을 char 배열로 만들어서 순회한다.'*' 만날때마다 stack에서 맨 위의 문자를 빼준다.정답을 리턴한다.4. 코드class Solution { public String removeStars(String s) { Stack stack = new Stack(); StringBuilder sb = new StringBuilder(); for(char ch:s.toCharArray()){ if(ch == '*'){ stack.pop(); } else { stack..

WIL 1주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?첫번째는 TDD로 개발을 하는 것이었습니다. TDD에 익숙하지 않다 보니 TDD로 개발하는 것이 어려웠습니다. 특히 bottom-up 방식에 익숙했던 제가 top-down 방식으로 개발을 하려고 하니 시간이 더 오래걸렸습니다.두번째는 단일 서버에서의 동시성 이슈를 해결하기 위해서 어떤 방법을 쓸지에 대한 고민이었습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?문제를 해결하기 위해 먼저 synchronized 키워드를 사용하였습니다. 동시성 이슈가 발생하는 메서드에 synchronized 키워드를 사용하여 메서드 전체에 lock을 건다면 다른 스레드에서 접근을 하지 못해 순차적으로 로직을 수행하게 됩니다. 다만, 블록 전체에 lock을 사용하기 때문에..

99클럽 코테 스터디 29일차 TIL, 정렬(Top K Frequent Elements)

1. 문제 정의2. 문제 접근각 숫자가 반복된 숫자를 map에 담아주고 정렬하여 정답을 리턴하면 된다.3. 문제 풀이map에 각 number가 몇번 반복됐는지 담는다.리스트 배열에 옮겨 담는다.정답을 리턴한다.4. 코드class Solution { public int[] topKFrequent(int[] nums, int k) { int[] answer = new int[k]; List[] list = new ArrayList[nums.length + 1]; Map map = new HashMap(); for(int n:nums){ map.put(n,map.getOrDefault(n,0)+1); } fo..

99클럽 코테 스터디 28일차 TIL, 그리디(Iterator for Combination)

1. 문제 정의2. 문제 접근할 수 있는 만큼 flip을 시켜주면 되므로 greedy를 이용한다.3. 문제 풀이처음 '0'부터 비교 문자를 시작한다.인덱스가 0부터 이전 문자와 비교하여 다르면 count를 1 증가시킨다.count를 리턴한다.4. 코드class Solution { public int minFlips(String target) { char[] array = target.toCharArray(); int count = 0; char prev = '0'; for(int i = 0; i  5. 회고만약 10101 이 우리가 원하는 문자열이라고 생각해보자. 우리는 00000 부터 시작하므로000001111111000010..

99클럽 코테 스터디 27일차 TIL, 문자열(Iterator for Combination)

1. 문제 정의2. 문제 접근문자열을 이용하라고 되어있지만 나는 dfs를 이용했다.3. 문제 풀이모든 구할 수 있는 문자열의 경우를 구한다.메서드에 맞게 구현해준다.4. 코드class CombinationIterator { List strList; int idx = 0; public CombinationIterator(String characters, int combinationLength) { strList = new ArrayList(); int n = characters.length(); dfs(0, characters,new StringBuilder(),combinationLength); // Collection..

99클럽 코테 스터디 26일차 TIL, 배열(Group the People Given the Group Size They Belong To)

1. 문제 정의2. 문제 접근배열을 이용하라고 했지만 나는 map을 이용하여 풀었다.3. 문제 풀이Map을 정의한다.groupSize의 값을 키로 하여, map에 index값을 추가한다.map의 크기가 groupSize가 되면 ans list 에 추가하고, map을 clear한다.4. 코드class Solution { public List> groupThePeople(int[] groupSizes) { List> ans = new ArrayList(); Map> map = new HashMap(); int l = groupSizes.length; for(int i = 0; i ()); map.get(size).add(i); ..

반응형