분류 전체보기
[leetcode] 198. House Robber [kotlin]
문제분석1. dp 문제이다.2. nums input 으로 각 집에있는 돈 양이 들어온다.3. nums array에 연속된 인덱스는 인접한 집으로 판단한다.4. 인접한 집을 털 수 없다. 문제해결1. 도둑이 선택할 수 있는 방법은 두가지이다. 현재 집을 털거나 털지 않거나이다.2. 현재 집을 턴다면 바로 전 집을 털 수 없기 때문에, 전 집을 털었을 때의 최대 돈과 전전집을 털고 현재 집을 털었을 때, 최대 돈을 비교하여 현재 집 기준으로 최대 돈을 구한다.3. 현재가 i라고 한다면 [i의 최대돈] = max([i-1 까지의 돈], [i-2 까지의 돈] + [i를 털었을때 돈] 이다.class Solution { fun rob(nums: IntArray): Int { if (nums.s..
[leetcode] 2.Add Two Numbers [Kotlin]
문제분석1. linkedList 문제이다.2. Int는 10자리지만, 첫째자리가 2가 넘으면 안되기 때문에, 일반적으로 먼저 계산을 한 후, linkedList로 만드는 형식으로는 Int value값이 넘어 갈 수 있다. 문제해결1. l1과 l2의 각 자리 수를 차례대로 더 해준다.2. 만약, 더 한 값이 10을 넘어간다면 다음 자리 수 더할 때 더해주도록 한다.3. l1과 l2의 자리 수가 같진 않기 때문에, 없는 값이라면 0을 더해주도록 한다.4. 만약, l1과 l2를 순회했는데, 다음 자리 수에 더해야되는 값이 1이라면 추가 Node를 만들어 더해준다. class Solution { fun addTwoNumbers(l1: ListNode?, l2: ListNode?): ListNode? { ..
[leetcode] 128.Longest Consecutive Sequence [kotlin]
문제 분석1. sorting 되지 않은 array가 input으로 주어진다.2. 연속된 숫자들이 가장 긴 경우의 숫자를 파악해야되는 문제이다.3. 시간복잡도 제한은 O(n)이다. 문제 해결1. sortedSet을 사용했다.2. sortedSet의 정렬은 logN이 걸리기 때문에, sortedSet을 사용했다.3. 각 숫자들을 정렬한다음. 현재 숫자와 앞의 숫자와 비교하여, 길이를 계산하였다. - 가장 첫번째의 경우 다음 숫자를 null로 두어, null 일 경우에는 첫번째 숫자로 가정하여 길이만 더하고, 다음 숫자를 (현재 숫자 + 1)로 지정하였다.4. 마지막 순회는 O(n)이기 때문에 O(n) 시간복잡도 이내에 문제를 해결할 수 있다. class Solution { fun longestCo..
![느린 intellij 고치기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnmdqG%2FbtsKxjGuGfi%2FTUaKCbr9gt65TpRlvxSyp1%2Fimg.png)
느린 intellij 고치기
일년동안 느린 intellij를 사용하면서, 노트북 뽑기 탓만 하다가, 원인을 찾고 느린 Intellij 고친 이야기에 대해 공유드리려고 합니다. 먼저 저의 노트북 스펙에 대해 설명드리자면, Apple M1 칩이 탑재된 맥북 프로입니다.M1 칩이 나온 이후부터, 여러 회사에서 Intel 칩 말고도 M1 칩이 호환되는 애플리케이션들을 내놓았습니다.JetBrain에서도 마찬가지로 Intellij를 두가지 버전으로 제공하고 있습니다. 하지만, 저는 아무생각없이, apple M1 맥북에 intel용 Intellij를 설치하고 사용하고 있었습니다.M1 맥북에 Intel용 intellij를 사용하면 당연히 느릴 수 밖에 없었고, 저는 이 느린 intellij 1년동안 사용했습니다,,(덕분에 코드에 대한 고민을 많이..
코루틴이란?
그동안 멈춰왔던, 글쓰기를 시작해보려고 합니다.현재 내가 쓰는 언어인 kotlin에 대해서 좀 더 알아보고, 공부할 수 있는 시간을 가져보겠습니다.kotlin docs에 있는 코루틴에 관한 내용 번역과 제가 공부한 내용들을 정리해보겠습니다. 코루틴이란?코루틴은 suspendable computation이다. 개념적으로 쓰레드와 비슷하다. 나머지 코드를 실행시키는 동시에, 코루틴에서 로직을 실행시킨다는 점에서 비슷히다. 하지만, 코루틴은 특정 쓰레드에 국한되지 않는다. 한 쓰레드에서 실행을 멈추고 다른 쓰레드에서 실행을 시킬 수 있다.코루틴을 경량의 쓰레드로 생각할 수 있다. 하지만, 실제 사용에서 쓰레드와 매우 다르게 만드는 중요한 차이점이 몇 가지 있다.여기서 suspendable computation..