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에서 가장 작은 수와 두번째로 작은 수를..