리트코드 - 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 -..
리트코드 - 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 ..
리트코드 - 139. Word Break 출처 - https://leetcode.com/problems/word-break/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 주어진 문자열 s와 문자열 사전 wordDict가 있을 때, 만약 s를 하나 이상의 사전 단어로 이루어진 공백으로 구분된 시퀀스로 나눌 수 있다면 true를 반환합니다. 단어 사전에서 동일한 단어가 세그먼트 내에서 여러 번 재사용될 수 있음에 유의하세요. 의사코드 wordDict의 크기가 0이면 false 리턴 wordSet = wordDict를 Set으로 변경 n = s.length dp = new boolean[n + 1] dp[0] = true 반복문 시작 (i ..
리트코드 - 198. House Robber 출처 - https://leetcode.com/problems/house-robber/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 당신은 길거리의 집들을 훔칠 계획을 세운 전문적인 도둑입니다. 집집마다 특정 금액의 돈이 숨겨져 있으며, 훔치는 것을 멈출 유일한 제약조건은 인접한 집들의 보안 시스템이 연결되어 자동으로 경찰에 연락이 되는 것이고, 이러한 연락은 인접한 두 집이 같은 날 저녁에 털린다면 발생합니다. 각 집의 돈의 양을 나타내는 정수 배열 nums가 주어지면 경찰에 경고를 주지 않고 오늘 밤 강탈할 수 있는 최대 금액을 반환하십시오. 의사코드 if (nums.length == 0..