전체 글

공부를 야무지게 해보겠습니다!! (알고리즘, 자료구조 문제 풀이 학습 및 기록)
문제 https://leetcode.com/problems/minimum-size-subarray-sum/ 더보기 Example 1: Input: target = 7, nums = [2,3,1,2,4,3] Output: 2 Explanation: The subarray [4,3] has the minimal length under the problem constraint. Example 2: Input: target = 4, nums = [1,4,4] Output: 1 Example 3: Input: target = 11, nums = [1,1,1,1,1,1,1,1] Output: 0 Constraints: 1
문제 https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/?envType=study-plan-v2&envId=top-interview-150 더보기 Example 1: Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2]. Example 2: Input: numbers = [2,3,4], target = 6 Output: [1,3] Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, in..
문제 https://leetcode.com/problems/valid-palindrome/ 더보기 Example 1: Input: s = "A man, a plan, a canal: Panama" Output: true Explanation: "amanaplanacanalpanama" is a palindrome. Example 2: Input: s = "race a car" Output: false Explanation: "raceacar" is not a palindrome. Example 3: Input: s = " " Output: true Explanation: s is an empty string "" after removing non-alphanumeric characters. Since a..
문제 https://leetcode.com/problems/minimum-absolute-difference-in-bst/?envType=study-plan-v2&envId=top-interview-150 더보기 Constraints: The number of nodes in the tree is in the range [2, 104]. 0
현대 컴퓨터에서는 CPU가 메모리의 데이터를 사용할 때, 메모리에 곧바로 접근하지 않고 캐시메모리를 활용한다. 또한 운영체제 자체에서 코드를 재정렬해서 효율적으로 구동하려고 하는 경우가 있는데, 이러한 상황들과 멀티쓰레딩 환경이 만나서 발생할 수 있는 여러 문제들이 있다. 어떤 문제가 있고, 어떻게 방지할 수 있는지 알아보자. 코드 재정렬(Reordering) 아래의 공유 클래스를 통하여 thread1 은 increment()를 무한반복하고, thread2는 checkForDataRace()를 무한반복하는 경우에 생긴다. public static class SharedClass { private int x = 0; private int y = 0; public void increment() { x++; ..
앞에서 멀티쓰레드 환경에서 발생할 수 있는 문제상황들을 알아보았는데, 그렇다면 어떻게 해야 이런 문제상활들을 발생하지 않고 스레드 안전하게 할 수 있을까? 자바에서 활용할 수 있는 동기화 기법을 알아보자. Synchroniztion 키워드 활용 synchroniztion 키워드를 활용하면, 여러 스레드에서 동시에 접근할 수 있는 객체에 Lock방식을 적용해서 하나의 스레드만 접근할 수 있도록 하는 것이다. 즉, 하나의 스레드가 Lock이 걸린 객체를 사용중이라면 다른 객체는 사용할 수 없게 막는 기법이다. 아래와 같이 메서드에 하나의 스레드만 접근하도록 막거나, 혹은 임계영역에만 적용시킬 수 도 있다. // 하나의 스레드만 해당 메서드를 사용할 수 있다. public synchronized void in..
멀티 스레드 프로그래밍을 공부하기전에 멀티 쓰레드를 사용하는 이유는 무엇일까? 바로 여러개의 쓰레드를 사용하면 동시에 여러 가지 작업을 수행할 수 있어서, 애플리케이션의 반응성을 향상시킬 수 있기 때문이다. 또한 여러 작업을 동시에 실행하여 더 뛰어난 성능을 달성할 수 도 있다. 그러므로 멀티쓰레드 환경에서 프로그래밍을 할 때 중요한 부분들을 잘 알아둬야 한다. 스레드 안전성 스레드의 안전성을 알아보기전에 스레드의 가장 큰 특징을 알고가야한다. 바로 모든 스레드가 공유하는 메모리 공간을 가지고 있다는 것이다. 모든 스레드가 하나의 메모리 공간을 공유한다는 말은, 여러개의 스레드가 메모리에 동시에 접근하여 데이터를 조작할 수 있고, 데이터 경쟁상태와 같은 여러 문제들을 일으킬 수 있기 때문에 멀티쓰레드 환..
· git
여러개의 커밋을 깔끔하게 한개의 커밋으로 합치고 싶을 때 사용한다. 앞으로 자주 이용할 것 같아서 정리해놓으려고 한다. 위와 같은 커밋기록이 있으 때 2번 커밋과 3번 커밋을 합치고 싶을 때 사용한다. 혹시 모를 백업을 위하여 최상위(즉 현재 HEAD=master가 가르키는 커밋)의 커밋번호를 기억해둔다(d7f318f) rebase대상을 init 커밋 위에 있는 1, 2, 3, 4 4개의 커밋으로 하고 싶을 때 아래와 같이 init의 커밋번호를 통하여 rebase명령어를 작성해준다. 즉 git rebase - i [커밋번호] 에서 커밋번호 이 후로 작성된 커밋이 모두 대상으로 올라오게 된다. git rebase -i 7cd8a80 명령어 실행 시 다음과 같은 창이 나타난다. 주의해야 할 점은 순서인데, ..
문제 https://leetcode.com/problems/find-peak-element/?envType=study-plan-v2&envId=top-interview-150 더보기 Example 1: Input: nums = [1,2,3,1] Output: 2 Explanation: 3 is a peak element and your function should return the index number 2. Example 2: Input: nums = [1,2,1,3,5,6,4] Output: 5 Explanation: Your function can return either index number 1 where the peak element is 2, or index number 5 where th..
문제 https://leetcode.com/problems/jump-game/ 더보기 Example 1: Input: nums = [2,3,1,1,4] Output: true Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index. Example 2: Input: nums = [3,2,1,0,4] Output: false Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index. Constraints: 1 max_idx: conti..
Don't stop 훈
쉬지마 정지훈