리트코드 - 238. Product of Array Except Self 출처 - https://leetcode.com/problems/product-of-array-except-self/?envType=study-plan-v2&envId=top-interview-150 문제 설명 정수 배열 nums가 주어지면 answer[i]가 nums[i]를 제외한 nums의 모든 요소의 곱과 같은 배열 answer를 반환합니다. nums의 접두사나 접미사의 곱은 32비트 정수에 들어가는 것이 보장됩니다. 나눗셈 연산을 사용하지 않고 O(n) 시간에 실행되는 알고리즘을 작성해야 합니다. 의사코드 int[] answer = new int[nums.length] answer[0] = 1 leftSum = 1 반복문 시작..
리트코드 - 380. Insert Delete GetRandom O(1) 출처 - https://leetcode.com/problems/insert-delete-getrandom-o1/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 RandomizedSet 클래스를 구현하세요. RandomizedSet() - RandomizedSet 객체를 초기화합니다. bool insert(int val) - 주어진 값 val을 집합에 삽입합니다. 값이 이미 존재하지 않으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. bool remove(int val) - 주어진 값 val이 집합에 존재하면 해당 값을 집합에서 제거합니다. 값이 존재..
리트코드 - 274. H-Index 출처 - https://leetcode.com/problems/h-index/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 주어진 정수 배열 citations에서 citations[i]는 연구자가 i번째 논문에 받은 인용 횟수입니다. 연구자의 h-index를 반환합니다. 위키피디아의 h-index 정의에 따르면, h-index는 주어진 연구자가 적어도 h번 이상 인용된 논문이 h편 이상이 되도록 하는 최대 값으로 정의됩니다. 의사코드 citations 배열 정렬 int n = citations.length 반복문 시작(i = 0, i = n - i) n -..
"컴퓨터 과학에서 어려운 것은 단 두 가지입니다: 캐시 무효화, 그리고 이름짓기 입니다." - 필 칼슨(Phil Karlson) 프로그래밍을 할 때 변수 이름을 짓는 것이 가장 어렵다고 생각합니다. 어떤 규칙이 있는 것은 아니지만 변수명을 잘 작성해야 코드의 이해도를 높이고 협업시에도 가독성면에서 큰 도움이 되기 때문입니다. 이러한 변수명 작성 규칙에 도움이 되는 A/HC/LC패턴을 소개하려고 합니다. 아래 코드는 자바를 기준으로 예시를 들어 설명하겠습니다. A/HC/LC 패턴 (prefix) + action (A) + high context (HC) + (low context) (LC) A/HC/LC 패턴에서 context(문맥)는 함수 또는 메소드가 수행하는 동작과 관련된 정보를 제공합니다. 해당 함..
리트코드 - 300. Longest Increasing Subsequence 출처 - https://leetcode.com/problems/longest-increasing-subsequence/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 정수 배열 nums가 주어지면, 엄격하게 증가하는 가장 긴 길이를 반환합니다. 의사코드 함수 lengthOfLIS(배열 nums) n = nums.length 배열 dp의 크기를 n으로 설정 dp[0] = nums[0] len(정답길이) = 1 반복문 시작(i 1부터 n-1까지) if (nums[i] > dp[len - 1]) dp[len] = nums[i] 길이 += 1 else idx = 이진탐..
리트코드 - 322. Coin Change 출처 - https://leetcode.com/problems/coin-change/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 주어진 정수 배열 coins는 서로 다른 액면가를 나타내는 동전들이며, 정수 amount는 총 금액을 나타냅니다. 이 금액을 만들기 위해 필요한 동전의 최소 개수를 반환하세요. 만약 주어진 동전들의 조합으로 해당 금액을 만들 수 없다면 -1을 반환하세요. 각 동전의 수량이 무한하다고 가정할 수 있습니다. 의사코드 n = coins배열의 길이 dp = new int[amount + 1] Arrays.fill(dp, Integer.MAX_VALUE) dp[0] = 0 ..