0, 1, 2, …, N-1로 표시된 N개의 항목이 있다고 가정합니다. 그런 다음 세트라고 하는 크기 S의 2D 목록이 제공됩니다. 여기에서 가격 세트[i,2]에 대한 i번째 세트를 구매할 수 있으며, 세트[i, 0]에서 세트[i, 1] 사이의 모든 항목을 받습니다. 또한 제거라고 하는 크기 N의 목록이 있습니다. 여기서 가격 제거[i]를 위해 i번째 요소의 인스턴스 1개를 버릴 수 있습니다. 따라서 0에서 N-1까지의 모든 요소 중 하나를 정확하게 구매하기 위한 최소 비용을 찾아야 합니다. 그렇지 않으면 결과는 -1입니다. 따라서
여러 문제가 있지만 한 문제를 해결하면 대회가 끝나는 프로그래밍 대회에 참가한다고 가정해 보겠습니다. 이제 포인트와 기회라고 하는 길이가 같은 두 개의 숫자 목록이 있습니다. 그것을 설명하기 위해 여기 i번째 문제에 대해 포인트[i] 포인트에 대해 해결할 확률[i]퍼센트가 있습니다. 우리는 또한 우리가 시도할 수 있는 문제의 수를 나타내는 또 다른 값 k가 있습니다. 같은 문제는 두 번 시도할 수 없습니다. 최적의 전략을 고안하면 가장 가까운 정수로 반올림되는 대회에서 얻을 수 있는 점수의 예상 값을 찾아야 합니다. i 번째 문제
x+y=z 형식의 방정식을 나타내는 문자열 s가 있다고 가정합니다. 방정식이 참이 되도록 s에 더해야 하는 최소 자릿수를 찾아야 합니다. 따라서 입력이 s =2+6=7과 같으면 출력은 2가 됩니다. 1과 2를 삽입하여 방정식을 21+6=27로 바꿀 수 있습니다. 따라서 필요한 수정의 총 수는 2입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − + 문자를 기준으로 s를 부분으로 분할하고 왼쪽 부분을 A에, 오른쪽 부분을 나머지 부분에 넣습니다. = 문자를 기준으로 나머지 부분을 분할하고 왼쪽 부분을 B에,
무방향 그래프를 나타내는 edge라고 하는 정수의 2D 목록이 있다고 가정합니다. 입력의 모든 행은 에지 [u, v, w]를 나타내며 노드 u와 v가 연결되어 있고 에지에 가중치 w가 있음을 의미합니다. 그래프는 0에서 n-1까지 n개의 노드로 구성됩니다. 경로 비용은 여기에서 모서리 수와 경로의 모서리에 대한 최대 가중치의 곱으로 정의됩니다. 노드 0에서 노드 n-1까지 가능한 최소 비용을 찾아야 하며, 그런 경로가 없으면 답을 -1로 선언해야 합니다. So, if the input is like edges = [
목록이 있고 목록의 힘이 모든 인덱스에 대한 (index + 1) * value_at_index의 합으로 정의된다고 가정합니다. 또는 다음과 같이 나타낼 수 있습니다. - $$\displaystyle\sum\limits_{i=0}^{n-1} (i+1)\times 목록[i]$$ 이제 N개의 양의 정수가 있는 목록 번호가 있습니다. 목록에서 단일 값을 선택하고 임의의 위치로(교환하지 않음) 이동할 수 있습니다. 목록의 시작 또는 끝으로 이동할 수 있습니다. 또한 위치를 전혀 이동하지 않도록 선택할 수도 있습니다. 우리는 목록의 가능
숫자 k가 있다고 가정하고 이제 1에서 k까지의 모든 값이 균등하게 나누어지는 가장 작은 양의 정수 값 x를 고려합니다. 다시 말해, x가 1에서 k까지의 모든 숫자로 나누어지는 가장 작은 값 x를 고려하십시오. x에서 뒤에 오는 0의 수를 찾아야 합니다. 따라서 입력이 k =6과 같으면 출력은 0이 됩니다. 여기서 가장 작은 x는 60이므로 60은 1, 2, 3, 4, 5 및 6을 사용하여 나눌 수 있습니다. 60. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 해상도 :=0 x :=1 동안 x * 5 <
nums라는 숫자 목록이 있다고 가정합니다. 이제 두 개의 연속 값을 취하여 합을 취하여 하나의 값으로 병합하는 작업을 고려해 보겠습니다. 목록이 증가하지 않도록 하려면 필요한 최소 연산 수를 찾아야 합니다. 따라서 입력이 nums =[2, 6, 4, 10, 2]와 같으면 출력은 2가 됩니다. [2, 6]을 병합하여 [8, 4, 10, 2]를 얻은 다음 [8, 4]를 병합하여 [12, 10, 2]를 얻습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 숫자가 비어 있으면 0 반환 숫자 끝에 -inf
소문자 문자열 s가 있다고 가정하고 s의 모든 하위 문자열에서 고유한 문자 수의 합을 찾아야 합니다. 답이 매우 크면 결과 모드 10^9+7을 반환합니다. 따라서 입력이 s =xxy와 같으면 하위 문자열과 해당 개수가 -이므로 출력은 6이 됩니다. x :1 x :1 y :1 xx :0(x는 구별되지 않음) xy :2 xxy :1(x가 구별되지 않기 때문에) 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m :=10^9 + 7 prev_seen :=새로운 빈 지도 답변 :=
0이 빈 셀을 나타내고 1이 벽을 나타내는 2차원 이진 행렬이 있다고 가정합니다. 왼쪽 위 셀과 오른쪽 아래 셀 사이에 경로가 없도록 벽이 되어야 하는 최소 셀 수를 찾아야 합니다. 왼쪽 위 셀과 오른쪽 아래 셀에는 벽을 놓을 수 없습니다. 대각선이 아닌 왼쪽, 오른쪽, 위, 아래로만 이동할 수 있습니다. 따라서 입력이 다음과 같으면 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 그러면 출력은 2가 됩니다. 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 이 문제를 해결하기 위해 다음
아래와 같이 서로 다른 값이 거의 없는 2D 행렬이 있다고 가정합니다. - 빈 셀의 경우 0 1인용 2 불 벽에 3개 이제 사람이 한 명뿐이고 각 턴에 불이 네 방향(위, 아래, 왼쪽, 오른쪽)으로 확장되지만 벽을 통해 확장할 수 없다고 가정합니다. 사람이 왼쪽 위 모서리나 오른쪽 아래 모서리 또는 행렬로 이동할 수 있는지 확인해야 합니다. 우리는 매 턴마다 사람이 먼저 움직이고 그 다음에 불이 확장된다는 것을 명심해야 합니다. 사람이 화재와 같은 시간에 목표 세포 중 하나에 도달하면 안전합니다. 따라서
문자 x와 y가 포함된 소문자 문자열 s가 있다고 가정합니다. 이제 단일 x를 y로 또는 그 반대로 변경하는 작업을 고려하십시오. 모든 x가 모든 y보다 먼저 오도록 설정하기 위해 해당 작업을 수행하는 데 필요한 최소 횟수를 찾아야 합니다. 따라서 입력이 s =yxyyyyxyxx와 같으면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − y_left :=0 x_right :=s에 있는 x의 수, res :=s에 있는 x의 수 s의 각 항목에 대해 수행 항목이 x와 같으면 x_ri
두 개의 문자열 s, t와 다른 문자열 r이 있다고 가정하고 s와 t의 순서대로 문자를 병합하여 r을 얻을 수 있는 방법이 있는지 확인해야 합니다. 따라서 입력이 s =xyz t =mno r =xymnoz와 같으면 출력은 True가 됩니다. xymnoz는 xyz와 mno를 인터리브하여 구성할 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − solve() 함수를 정의합니다. s, t, r이 걸립니다. s, t 및 r이 비어 있으면 참을 반환 r이 비어 있으면 거짓을 반환
nums라는 숫자 목록이 있다고 가정합니다. 인접한 값의 모든 쌍의 합이 완전제곱이 되도록 숫자의 순열 수를 찾아야 합니다. A[i]가 B[i]와 같지 않은 인덱스 i가 있는 경우 두 순열 A와 B는 고유합니다. 따라서 입력이 nums =[2, 9, 7]과 같으면 출력은 [2, 7, 9] 및 [9, 7, 2]가 있는 것처럼 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 해상도 :=0 util() 함수를 정의합니다. 이 시간이 걸립니다 i + 1이 nums의 크기와 같으면 해상도 :=해상도
캔디라는 숫자 목록이 있고 두 사람이 가장 많은 캔디를 모으기 위해 경주하고 있다고 가정합니다. 여기에서 레이스는 턴 기반이고 사람 1이 먼저 시작하고 각 턴에서 앞이나 뒤에서 사탕을 줍습니다. 1이 다른 사람보다 사탕을 더 많이 모을 수 있는지 확인해야 합니다. 따라서 입력이 사탕 =[1, 4, 3, 8]과 같으면 사람 1이 첫 번째 라운드에서 사탕 8개를 가져갈 수 있고 두 번째 사람이 1 또는 3을 선택하는지 여부에 관계없이 사람 1이 출력되므로 출력은 True입니다. 남은 사탕을 가져가면 승리할 수 있습니다. 이 문제를
두 명의 플레이어가 게임을 하고 있다고 가정합니다. 여러 개의 사탕을 한 줄에 놓고 사람 1에게 각 사탕의 포인트 값을 나타내는 nums라는 숫자 목록이 제공됩니다. 각 사람의 차례에 줄 맨 앞에서 1, 2 또는 3개의 사탕을 선택한 다음 목록에서 삭제하고 점수의 합을 점수에 추가할 수 있습니다. 이 게임은 모든 사탕이 삭제되면 종료되며 더 높은 점수를 받은 사람이 승자가 됩니다. 1번 사람이 이 게임에서 이길 수 있는지 확인해야 합니다. 따라서 입력이 nums =[1, 1, 2, 3, 50]과 같으면 사람 1이 사탕 1개를 가져
행렬 [r, c]가 해당 셀의 동전 수를 나타내는 2D 행렬이 있다고 가정합니다. 우리는 모든 위치에서 시작할 수 있으며 4 방향(대각선이 아닌 위, 아래, 왼쪽 및 오른쪽) 중 하나를 움직여 코인을 수집하고 싶습니다. 셀로 이동하면 코인이 수집되고 해당 셀의 값은 0이 됩니다. 0코인이 있는 셀은 방문할 수 없으므로 최대 모을 수 있는 코인의 양을 찾아야 합니다. 따라서 입력이 다음과 같으면 2 4 3 3 6 0 2 0 12 3 경로를 사용할 수 있으므로 출력은 18이 됩니다. 이 문제를 해결하기 위해 다음 단계를
가능한 값이 3개인 2D 행렬이 있다고 가정합니다. − 빈 셀의 경우 0입니다. 1코인입니다. 벽의 경우 -1입니다. 왼쪽 위 셀에서 시작하여 오른쪽 또는 아래쪽 방향으로만 이동하여 오른쪽 아래 셀에 도달하여 얻을 수 있는 최대 동전 수를 찾아야 합니다. 그런 다음 위쪽 또는 왼쪽 방향으로만 이동하여 왼쪽 위 셀로 돌아갑니다. 동전을 집었을 때 셀 값은 0이 됩니다. 오른쪽 하단 셀에 도달할 수 없으면 0을 반환합니다. 따라서 입력이 다음과 같으면 0 1 1 1 1 1 −1 1 1 0 1 1 그러
문자열 s가 있다고 가정합니다. s는 0 - 9 사이의 숫자를 포함하고 또 다른 숫자 k도 있습니다. s가 [1, k]의 숫자 목록으로 표현될 수 있는 다양한 방법을 찾아야 합니다. 답이 매우 크면 결과 모드 10^9 + 7을 반환합니다. 따라서 입력이 s =3456 k =500과 같으면 출력은 [3, 4, 5, 6], [34, 5, 6], [3, 4, 56], [3, 45, 6], [34, 56], [345, 6], [3, 456] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m :=10^9 + 7 N :=s
2차원 이진 행렬이 있다고 가정하고 주어진 행렬에서 고유한 섬의 수를 찾아야 합니다. 여기서 1은 육지를 나타내고 0은 물을 나타내므로 섬은 주변이 물로 둘러싸여 있는 1의 집합입니다. 모양이 다른 두 개의 섬은 고유합니다. 따라서 입력이 다음과 같으면 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 그러면 출력은 4가 됩니다(별도의 섬은 다른 색상으로 표시됨). 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dfs() 함수를 정의합니다. i,
두 개의 값 n과 k가 있다고 가정합니다. 이제 범위 1에서 n까지의 숫자 목록 [1, 2, ..., n]을 고려하고 이 목록의 모든 순열을 사전순으로 생성합니다. 예를 들어, n =4라면 [1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2, 2413, 2431, 3124, 3142, 3 4213, 4231, 4312, 4321]. 이 순열 시퀀스의 k번째 값을 문자열로 찾아야 합니다. 따라서 입력이 n =4 k =5와 같으면 출력은 1432가 됩니다. 이 문제를 해결