README.md
·
우테코 7기
❒ Description내일(10.15 화요일)부터 우테코7기 프리코스를 시작한다. 그에 따라 필요한 몇 가지 준비를 전날 미리 해두려고 한다.     ❒ Java version 물로 최근에 Virtual Thread 기술을 탑재한 Java21이 나왔지만, 6기도 Java17을 썼기 때문에 17을 사용할 것 같다.  ※ [2024.10.15]나의 예상과 다르게 Java21이로 과제를 진행한다고 한다.보자마자 java21로 변경해주고, Intellij java compile도 21로 변경해줬다.     ❒ gradlew 1. Why?mac을 사용하는 경우 다음 에러가 발생한다.zsh: ./gradlew: bad interpreter: /bin/sh^M: no such file or directory 이 오..
Comparable, Stream을 사용하여 뱃지 부여하기
·
Langauge/Java
❒ Description우테코 6기 프리코스를 연습 삼아 해보는 과정에서 작성한 코드를 리펙토링 해봤다.※ Commit link    ❒ 요구 사항 및 로직 분석1. Requirements특정 금액 이상 사용을 하면 뱃지를 부여하는 요구사항이 있었다.해당 요구사항을 충족하기 위해 Comparable, Stream API(sorted, reduce)를 사용해서 기능을 구현했다.NONE : 5000원 미만 ("없음")STAR : 5000원 이상TREE : 10000원 이상SANTA : 20000원 이상 2. LogicBadge를 부여하는 역할은 Badge Enum 클래스가 담당한다.비교를 위해 Money 클래스의 크기를 내림차순 비교해야 한다.Comparable 인터페이스, Stream API - sorte..
[LeetCode#74] Search a 2D Matrix
·
Algorithm/문제풀이
❒ Description날짜2024.10.02 (수)레벨Medium제목Search a 2D Matrix링크https://leetcode.com/problems/search-a-2d-matrix/description/알고리즘Binary Search시간 복잡도O(log(n+m))     ❒ Ideation[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 60]]matrix 내의 subArray를 그냥 하나의 덩어리로 바라본다. 우선 matrix에 대해서 binary search를진행하고, target이 포함된 subArray를 찾는다. 만약 없다면 null을 반환한다.subArray[firstIdx] > target : right cursor 이동subArray[la..
MVCC (Multi Version Concurrency Control)
·
CS/Database
❒ DescriptionLock을 활용한 concurrency control에서 Lock의 동작원리 및 특징에 대해서 학습했다.하지만 Lock을 사용하여도 데이터의 일관성이 보장되지 않아 2PL이 등장하고, 2PL의 변형 모델도 학습했다.  Lock을 활용한 concurrency control❒ Description지금까지 concurrency control이 무엇인지, 왜 필요한지에 대해서 학습했다.오늘은 동시성 제어를 구현한 기법 중 하나인 Lock과 2PL에 대해서 학습하자.     ❒ Lock의 종류1. write-lock (exclusgilbert9172.tistory.com그리고 Lock은 호환성이 좋지 않다는 점도 표로 확인했다. 호환성이 좋지 못하다는 것은 동시에 처리량이좋지 못하다는 의미..
Lock을 활용한 concurrency control
·
CS/Database
❒ Description지금까지 concurrency control이 무엇인지, 왜 필요한지에 대해서 학습했다.오늘은 동시성 제어를 구현한 기법 중 하나인 Lock과 2PL에 대해서 학습하자.     ❒ Lock의 종류1. write-lock (exclusive-lock)쓰기(배타) 락은 다른 트랜잭션이 같은 데이터를 읽거나 쓰는 것(INSERT, UPDATE, DELETE)을 허용하지않는다. 따라서 잠금이 해제 될 때까지 다른 트랜잭션은 해당 데이터를 읽지도, 쓰지도 못한다.  2. read-lock (shared-lock)다른 트랜잭션이 같은 데이터를 읽는 것을 허용한다. 읽기(공유) 잠금은 읽기 잠금끼리는 동시에 접근이가능하지만, 읽기 잠금이 설정된 데이터에 쓰기 잠금은 사용할 수 없다.     ❒..
[LeetCode#33] Search in Rotated Sorted Array
·
Algorithm/문제풀이
❒ Description날짜2024.10.01 (화)레벨Medium제목Search in Rotated Sorted Array링크https://leetcode.com/problems/search-in-rotated-sorted-array/description알고리즘Binary Search시간 복잡도O(logN)     ❒ 문제 및 로직 분석이 문제는 O(logN)의 시간 복잡도로 풀이해야 하는 문제로, pivot을 기준으로 회전된 정렬 배열에서특정 값을 찾아야 한다.int[] nums = {4, 5, 6, 7, 0, 1, 2, 3};  1. Pivot 찾는 방식먼저 pivot을 찾아야 한다. 시간복잡도 제약이 있기 때문에 pivot을 찾는 과정도 O(logN)로 해결해야 한다.Pivot을 찾으려면 `num..
Binary Search
·
Algorithm/내용 정리
❒ Description이분 탐색의 동작과정을 정리하자.     ❒ Binary Search 이진 검색이란 정렬된 배열에서  타깃을 찾는 검색 알고리즘이다. 어떠한 경우에는 O(logN)의 시간복잡도를 갖는다. 동작 방식은 아래와 같다.      ❒ 효율적인 중앙 찾기만약 아래와 같이 중앙 위치를 찾는면 중앙 값은 0이 나오게 된다.int start = Integer.MAX_VALUE;int end = Integer.MAX_VALUE;int mid = (start + end) / 2;그 이유는 start와 end의 합이 자료형의 최댓 값을 넘어가기 때문이다.  이런 경우를 방지하기 위해서 다음과 같이 중앙 값을 찾아야 한다.int start = Integer.MAX_VALUE;int end = Integ..
Dutch National Flag
·
Algorithm/내용 정리
❒ Description[LeetCode#75] Sort Colors 문제를 풀면서 알게된 Dutch National Flag 알고리즘을 정리해보자.     ❒ DNF 알고리즘1. DNF란?Dutch National Flag Problem(네덜란드 국기 문제)은 컴퓨터 과학자 다이크스트라가 제안한 알고리즘문제로, 배열 내의 요소들을 세 개의 범주로 나누는 문제다. 네덜란드 국기의 색깔(빨강, 하양, 파랑)에 비유해서이름이 붙여졌다. 이 문제의 목표는 배열에 세 가지 다른 값이 있을 때, 이를 특정 순서대로 배열하는 것이다. 보통 이 문제는 0, 1, 2로이루어진 배열을 다루며, 0은 왼쪽에, 1은 중간에, 2는 오른쪽에 배치하는 것을 목표로 한다.  2. 동작 방식mid가 2이면 mid와 high의 값을..
[LeetCode#75] Sort Colors
·
Algorithm/문제풀이
❒ Description날짜2024.09.30 (월)레벨Medium제목Sort Colors링크https://leetcode.com/problems/sort-colors/description/?envType=problem-list-v2&envId=sorting알고리즘Dutch National Flag, Insertion-sort시간 복잡도O(N)     ❒ 문제 및 로직 분석이번 문제는 in-place 알고리즘을 사용해서 풀이해야 하는데, 그 중에서는 시간복잡도가 O(N)인 네덜란드 국기 (Dutch National Flag) 알고리즘을 구현해야 하는 문제이다. 물론 삽입 정렬로도풀이가 가능하지만 삽입정렬은 input의 크기가 커질수록 성능이 저하되기 때문에 여기서는 제외다.     ❒ Solution1..
[LeetCode#242] Valid Anagram
·
Algorithm/문제풀이
❒ Description날짜2024.09.29 (일)레벨Easy제목Valid Anagram링크https://leetcode.com/problems/valid-anagram/description알고리즘정렬시간 복잡도O(N)     ❒ Solution1. Map counterpublic boolean isAnagram(String s, String t) { // 예외 if (s.length() == 1) { return s.equals(t); } // create counter map Map counter = new HashMap(); for (int i = 0; i entry : counter.entrySet()) { if (entry.getVal..