LeetCode - 2140. Solving Questions With Brainpower
·
Algorithm
문제링크 문제 설명0-indexed 2차원 정수 배열 questions가 주어집니다.각 questions[i] = [pointsi, brainpoweri]는 시험의 i번째 문제에 대한 정보를 나타냅니다.pointsi: i번 문제를 풀었을 때 얻는 점수brainpoweri: i번 문제를 풀 경우, 그 다음의 brainpoweri개 문제는 건너뛰어야 합니다.문제는 순서대로 풀어야 하며, 각 문제에 대해 풀거나(solve) 건너뛸지(skip)를 결정해야 합니다.예를 들어,questions = [[3, 2], [4, 3], [4, 4], [2, 5]]일 때:0번 문제를 풀면 3점을 얻지만, 1번과 2번 문제는 건너뛰어야 합니다.0번을 건너뛰고 1번을 풀면 4점을 얻지만, 2번과 3번 문제는 건너뛰어야 합니다.시..
LeetCode - 3169. Count Days Without Meetings
·
Algorithm
문제링크 문제 설명직원이 근무할 수 있는 총 일수를 나타내는 양의 정수 days가 주어집니다 (1일부터 시작).또한, 크기가 n인 2차원 배열 meetings가 주어지며,meetings[i] = [start_i, end_i]는 i번째 회의가 시작되는 날과 끝나는 날(양 끝 포함)을 나타냅니다.직원이 근무 가능한 날 중, 회의가 잡히지 않은 날의 수를 반환하세요.🔸 회의는 겹칠 수 있습니다. (즉, 동일한 날에 여러 회의가 잡힐 수 있음)제한 사항1 1 meetings[i].length == 21 예시Example 1:Input: days = 10, meetings = [[5,7],[1,3],[9,10]]Output: 2Explanation:There is no meeting scheduled on th..
LeetCode - 2206. Divide Array Into Equal Pairs
·
Algorithm
문제링크 문제 설명정수 배열 nums가 주어집니다. nums는 2 * n 개의 정수로 이루어져 있습니다.다음 조건을 만족하도록 nums를 n개의 짝(pair) 으로 나누어야 합니다:각 요소는 정확히 한 개의 쌍(pair)에만 포함되어야 합니다.각 쌍의 두 요소는 서로 같아야 합니다.만약 nums를 이러한 방식으로 n개의 쌍으로 나눌 수 있다면 true를 반환하고, 그렇지 않다면 false를 반환하세요.제한 사항nums.length == 2 * n1 1 예시Example 1:Input: nums = [3,2,3,2,2,2]Output: trueExplanation: There are 6 elements in nums, so they should be divided into 6 / 2 = 3 pairs.If..
백준 - 16207: 직사각형
·
Algorithm
문제링크 문제 설명풀이 흐름각 막대별로 최대 1번씩만 기계를 사용할 수 있다는 것에 주목했습니다. 이는 길이의 차가 2이상인 막대는 직사각형의 평행한 변으로 만들 수 없다는 뜻입니다.주어진 막대의 길이들을 정렬한 이후에 최대값부터 순차적으로 탐색하면서 직사각형을 만들 수 있는 4개의 수를 찾았습니다.최대값부터 순차적으로 탐색하는 이유는 다음과 같습니다. (a, b, c, d인 실수가 있고, a >= b >= c >= d 라고 가정)(a * b + c * d) - (a * d + b * c) = a * (b - d) - c * (b - d) = (a - c) * (b - d) >= 0(a * b + c * d) - (a * c + b * d) = a * (b - c) - d * (b - c) = (a - ..
LeetCode - 1358. Number of Substrings Containing All Three Characters
·
Algorithm
문제링크 문제 설명문자열 s가 주어집니다. s는 오직 문자 'a', 'b', 'c'로만 이루어져 있습니다.최소 한 번 이상 'a', 'b', 'c'가 모두 포함된 부분 문자열(substring) 의 개수를 반환하세요.제한 사항3 s only consists of a, b or c characters.예시Example 1:Input: s = "abcabc"Output: 10Explanation: The substrings containing at least one occurrence of the characters a, b and c are "abc", "abca", "abcab", "abcabc", "bca", "bcab", "bcabc", "cab", "cabc" and "abc" (again).  E..
LeetCode - 3208. Alternating Groups II
·
Algorithm
문제링크 문제 설명빨간색과 파란색 타일로 이루어진 원형 배열이 있습니다.정수 배열 colors와 정수 k가 주어집니다. 각 타일의 색상은 colors[i]로 표현됩니다:colors[i] == 0이면 i번째 타일은 빨간색입니다.colors[i] == 1이면 i번째 타일은 파란색입니다.교차 그룹(Alternating Group)은 원에서 연속된 k개의 타일로 이루어진 부분이며, 서로 교차하는 색상을 가져야 합니다.즉, 그룹의 첫 번째와 마지막 타일을 제외한 모든 타일은 양옆의 타일과 다른 색상을 가져야 합니다.원형 배열이므로, 첫 번째 타일과 마지막 타일도 서로 인접한 것으로 간주합니다.k개의 연속된 타일이 조건을 만족하는 교차 그룹의 개수를 반환하세요.제한 사항3 0 3 예시Example 1:Input: ..
LeetCode - 1980. Find Unique Binary String
·
Algorithm
문제링크 문제 설명길이가 n인 고유한 이진 문자열 n개가 담긴 문자열 배열 nums가 주어집니다.이때, nums에 존재하지 않는 길이 n의 이진 문자열을 반환하세요.만약 가능한 정답이 여러 개라면, 그중 아무 것이나 반환해도 됩니다. 제한 사항n == nums.length1 nums[i].length == nnums[i]는 '0' 또는 '1'로만 구성됩니다.nums의 모든 문자열은 서로 고유(unique) 합니다. 예시Example 1:Input: nums = ["01","10"]Output: "11"Explanation: "11" does not appear in nums. "00" would also be correct. Example 2:Input: nums = ["00","01"]Output: "..
LeetCode - 1718. Construct the Lexicographically Largest Valid Sequence
·
Algorithm
문제링크 문제 설명정수 n이 주어졌을 때, 다음 조건을 모두 만족하는 수열을 찾습니다.숫자 1은 수열에서 한 번만 등장합니다.2부터 n까지의 모든 정수는 수열에서 정확히 두 번씩 등장합니다.2부터 n까지의 모든 정수 i에 대해, 두 번째 등장 위치와 첫 번째 등장 위치 사이의 거리는 정확히 i가 되어야 합니다.즉, 숫자 i가 등장하는 두 인덱스 a[i]와 a[j]에 대해, |j - i| = i가 성립해야 합니다.위 조건을 만족하는 여러 개의 수열 중 사전순으로 가장 큰 수열을 반환해야 합니다.두 수열 a와 b의 숫자가 처음으로 달라지는 위치에서 a의 숫자가 b의 숫자보다 크다면, a가 더 큰 수열입니다.예를 들어, [0,1,9,0]은 [0,1,5,6]보다 더 큽니다. (9 > 5)주어진 조건을 만족하는 ..
LeetCode - 1352. Product of the Last K Numbers
·
Algorithm
문제링크 문제 설명ProductOfNumbers 클래스를 구현하세요.ProductOfNumbers()객체를 초기화하며, 빈 상태의 숫자 스트림을 생성합니다.void add(int num)정수 num을 스트림에 추가합니다.int getProduct(int k)현재 리스트에서 마지막 k개의 숫자의 곱을 반환합니다.(항상 k개의 숫자를 포함하고 있다고 가정할 수 있습니다.)추가 조건:테스트 케이스는 연속된 숫자들의 곱이 32비트 정수 범위를 초과하지 않도록 생성됩니다. -> 자바의 int 범위를 넘어서지 않는다는 의미입니다. 제한 사항0 1 add 및 getProduct의 호출은 최대 40,000번까지 가능합니다. 예시Input["ProductOfNumbers","add","add","add","add","a..
LeetCode - 3066. Minimum Operations to Exceed Threshold Value II
·
Algorithm
문제링크 문제 설명0부터 시작하는 정수 배열 nums와 정수 k가 주어집니다.아래의 과정을 하나의 연산으로 정의합니다.nums에서 가장 작은 두 개의 정수 x와 y를 선택합니다.x와 y를 nums에서 제거합니다.min(x, y) \* 2 + max(x, y) 값을 배열에 추가합니다.참고: 배열 nums에 적어도 두 개 이상의 요소가 있어야 이 연산을 수행할 수 있습니다.모든 배열 요소가 k 이상이 되도록 하기 위해 필요한 최소 연산 횟수를 반환하세요.제한 사항2 1 1 입력은 항상 정답이 존재하도록 생성됩니다. 즉, 배열의 모든 요소가 kk 이상이 되도록 만드는 일련의 연산이 반드시 존재합니다.입력에 대한 정답은 항상 존재합니다.풀이 흐름연산의 흐름을 보면 nums에서 가장 작은 수와 두번째로 작은 수를..