nums라는 숫자 목록이 있다고 가정하고 회전을 사용하여 숫자를 정렬할 수 있는지 여부를 확인해야 합니다. 회전을 통해 num의 끝에서 일부 인접한 요소를 이동하여 배열 앞에 배치할 수 있습니다. 따라서 입력이 nums =[4,5,6,1,2,3]과 같으면 마지막 세 요소를 회전하여 정렬하고 처음으로 다시 보낼 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=숫자 크기 숫자가 정렬되면 참 반환 그렇지 않으면 상태 :=참 0 ~ n - 2 범위의 i에 대해 숫자[i + 1
섬이 있다고 가정해 봅시다. 그 위치에 단 하나의 상점이 있습니다. 이 상점은 일요일을 제외하고 항상 열려 있습니다. 입력으로 다음 값이 있습니다 − N(하루에 살 수 있는 최대 음식 수). S(생존에 필요한 일수). M(생존을 위해 매일 필요한 음식의 수). 월요일이라면 다음 S일 동안 생존해야 합니다. 우리가 생존할 수 있는지 여부를 확인해야 합니다. 식량을 사야 하는 최소 일수를 찾을 수 있다면 다음 S일을 버틸 수 있습니다. 따라서 입력이 S =12, N =24, M =3과 같으면 출력은 True이고 음식을 사야 하는
두 개의 문자열 s와 t가 있다고 가정합니다. t는 대문자입니다. 다음 연산을 수행하여 t로 변환할 수 있는지 확인해야 합니다. 일부 소문자를 대문자로 변환합니다. 소문자를 모두 제거합니다. 따라서 입력이 s =fanToM, t =TOM과 같으면 o를 O로 변경한 다음 s에서 다른 모든 소문자를 제거하여 t로 만들 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=s의 크기, m :=t의 크기 dp:=(m + 1)x(n + 1) 크기의 행렬이고 False로 채움 dp[0, 0
nums라는 숫자 배열이 있고 또 다른 값 K가 있다고 가정합니다. 각 하위 배열의 요소 합이 동일하도록 배열 num을 K개의 연속 하위 배열로 분할할 수 있는지 확인해야 합니다. 따라서 입력이 nums =[2, 5, 3, 4, 7] k =3과 같으면 [(2, 5), (3, 4), (7)] 모두 합이 7입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=숫자 크기 cumul_sum :=nums의 모든 요소의 누적 합계 total_sum :=cumul_sum[n - 1] total_sum이 k로 나누어지지 않으면
a^0, a^1, a^2, ..., a^100과 같은 가중치가 있다고 가정합니다. 여기서 a는 정수이고 양쪽에 가중치를 둘 수 있는 저울도 있습니다. 규모. W의 특정 항목을 이 가중치를 사용하여 측정할 수 있는지 여부를 확인해야 합니다. 따라서 입력이 a =4, W =17과 같으면 출력은 True가 됩니다. 가중치는 a^0 =1, a^1 =4, a^2 =16이며 16 + 1 =17을 얻을 수 있습니다. . 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 찾음 :=거짓 util() 함수를 정의합니다. idx, itemWt,
nums라는 배열과 다른 값 k가 있다고 가정하면 nums의 LCM이 k로 나누어 떨어지는지 여부를 확인해야 합니다. 따라서 입력이 nums =[12, 15, 10, 75] k =10과 같으면 배열 요소의 LCM이 300이므로 10으로 나눌 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 0부터 숫자 - 1까지의 범위에 있는 i에 대해 nums[i]가 k로 나누어지면 참 반환 거짓을 반환 예 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − def solve(nums,
두 개의 이진 트리가 있다고 가정합니다. 이 두 트리의 잎 순회가 동일한지 여부를 확인해야 합니다. 우리가 알고 있듯이 잎 순회는 왼쪽에서 오른쪽으로 순회하는 잎의 시퀀스입니다. 따라서 입력이 다음과 같으면 두 트리의 왼쪽 순회 시퀀스가 동일하므로 출력은 True, 즉 [5, 7, 8]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − s1 :=새 목록, s2 :=또 다른 새 목록 r1을 s1에 삽입하고 r2를 s2에 삽입 s1과 s2가 비어 있지 않은 동안 do s1이 비어 있거나 s2가 비어 있으면 거
연결 목록이 있다고 가정해 보겠습니다. 연결 목록이 오름차순으로 정렬되어 있는지 여부를 확인하기 위해 두 개의 함수를 정의해야 합니다. 방법 중 하나는 반복적 방식으로 작동하고 다른 하나는 재귀적 방식으로 작동합니다. 따라서 입력이 L =[15, 13, 8, 6, 4, 2]와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − solve_iter() 함수를 정의합니다. 이것은 머리가 걸릴 것입니다 head가 null이면 참 반환 head의 다음이 null이 아닌 동안 do 현재 :=머리 현
숫자가 아닌 소문자 또는 대문자로만 구성된 문자열 s가 있다고 가정합니다. 소문자와 대문자가 각각 같은 순서를 따르는지 여부를 확인해야 합니다. 따라서 한 문자가 소문자로 두 번 이상 나타나면 대문자로 동일한 문자가 발생하는 것과 동일합니다. 따라서 입력이 s =piPpIePE와 같으면 소문자와 대문자의 발생이 동일하고 소문자와 대문자도 같은 순서이므로 출력은 True입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 소문자 :=빈 문자열, 대문자 :=빈 문자열 0 ~ s - 1 크기 범위의 i에 대해 s[i]가 대
두 개의 N X M 이진 행렬 A와 B가 있다고 가정합니다. 단일 작업으로 부분 행렬(최소 2x2)을 선택하고 모서리 요소의 패리티(플립 비트)를 변환할 수 있습니다. 마지막으로 행렬 A가 여러 연산을 수행하여 B로 변환될 수 있는지 여부를 확인해야 합니다. 따라서 입력이 다음과 같으면 1 0 0 1 0 1 1 0 0 mat2를 얻기 위해 mat1에서 크기(2x2)의 왼쪽 위 정사각형 부분행렬에 대한 연산을 수행할 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − r
mat1과 mat2라는 두 개의 N X M이 있다고 가정합니다. 연산에서 mat1의 모든 정사각형 부분행렬을 전치할 수 있습니다. 주어진 연산을 수행하여 mat1에서 mat2를 얻을 수 있는지 여부를 확인해야 합니다. 따라서 입력이 다음과 같으면 5 6 7 1 2 3 6 8 9 5 6 2 1 7 3 6 8 9 mat1의 2x2 크기의 오른쪽 위 부분행렬을 전치하면 mat2가 되기 때문에 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − row :=행렬의 행 수 column
정방 행렬이 있다고 가정합니다. 각 행에 대해 행 반전 연산을 수행한 후 행렬이 동일하게 유지되는지 여부를 확인해야 합니다. 따라서 입력이 다음과 같으면 6 8 6 2 8 2 3 3 3 그러면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=행렬의 행 수 0 ~ n - 1 범위의 i에 대해 왼쪽 :=0, 오른쪽 :=n - 1 왼쪽 <=오른쪽, do 행렬[i, 왼쪽]이 행렬[i, 오른쪽]과 같지 않으면 거짓을 반환 왼쪽 :=왼쪽 + 1, 오른쪽 :=오른쪽 - 1 참 반
두 개의 문자열 s와 t가 있다고 가정하고 s에서 가장 빈번한 문자를 선택하고 그 특정 문자가 t에 동일한 횟수만큼 존재하는지 확인해야 합니다. 따라서 입력이 s =crosssection, t =securesystem과 같으면 s에서 가장 빈번한 문자가 s이므로 출력은 True가 됩니다. 그리고 t에 의 출현 횟수가 동일합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − freq :=s의 모든 문자와 그 빈도를 포함하는 지도 max_freq_char =빈도가 최대인 s의 문자 max_freq :=max_freq_cha
숫자 n이 있다고 가정합니다. 세븐세그먼트 디스플레이에 표시될 때 해당 숫자의 미러 이미지가 주어진 숫자와 동일한지 여부를 확인해야 합니다. 따라서 입력이 n =818과 같으면 출력은 True가 됩니다. 미러 이미지는 동일합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − num_str :=n을 문자열로 범위 0에서 num_str - 1 크기의 i에 대해 num_str[i]가 [0, 1, 8]이 아니면 거짓을 반환 왼쪽 :=0 오른쪽 :=num_str의 크기 - 1 왼쪽 <오른쪽, do num_str[
하나의 이진 목록이 있다고 가정합니다. 여기서 1은 푸시 작업을 나타내고 0은 스택 또는 큐에 대한 팝 작업을 나타냅니다. 가능한 작업 집합이 유효한지 여부를 확인해야 합니다. 따라서 입력이 nums =[1,0,1,1,0,1]과 같으면 시퀀스가 [Push,Pop,Push,Push,Pop,Push]이므로 출력은 True가 됩니다. 이러한 작업이 유효하도록 빈 목록에서 요소를 팝핑합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 푸시_카운트:=0 0부터 숫자 - 1까지의 범위에 있는 i에 대해 nums[i]가 1이
숫자 목표가 있다고 가정합니다. A와 B라는 두 개의 숫자가 더 있습니다. A와 B를 원하는 만큼 추가하여 목표물을 얻을 수 있는지 확인해야 합니다. 따라서 입력이 Target =26 A =5 B =7과 같으면 (7 + 7 + 7 + 5)와 같이 A와 B를 추가하여 26을 얻을 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − util() 함수를 정의합니다. x, b, is_ok, target이 필요합니다. 타겟이면 반환 is_ok[x]가 True이면 반환 is_ok[x] :=
숫자 n이 있다고 가정하면 n이 계승 소수인지 여부를 확인해야 합니다. 우리가 알고 있는 바와 같이 어떤 숫자의 계승보다 하나 작거나 하나 더 큰 소수인 경우 그 숫자를 계승 소수라고 합니다. 따라서 입력이 n =719와 같으면 출력은 719 =720 - 1 =6과 같이 True가 됩니다! - 1 이 문제를 해결하기 위해 다음 단계를 따릅니다. − num이 소수가 아니면 거짓을 반환 팩토리얼 :=1, i :=1 factorial <=num + 1인 동안 do factorial :=계승 * i num + 1이 계승과 같거나
숫자 n이 있다고 가정합니다. 또 다른 두 개의 숫자와 b가 있습니다. n을 나누는 and b를 사용하여 숫자를 생성할 수 있는지 확인해야 합니다. 따라서 입력이 n =115, a =3, b =2와 같으면 115는 2와 3으로 구성된 23으로 나눌 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − util() 함수를 정의합니다. temp, b, n이 소요됩니다. n이면 거짓을 반환 n이 온도로 나누어지면 참 반환 util(temp * 10 + a, a, b, n) 또는
두 개의 숫자 x와 n이 있다고 가정합니다. 산술 연산자를 사용하지 않고 x가 2^n으로 나누어 떨어지는지 확인해야 합니다. 따라서 입력이 x =32 n =5와 같으면 출력은 32 =2^5와 같이 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − x AND(2^n - 1)가 0이면 참 반환 거짓을 반환 예시 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − def solve (x, n): if (x & ((1 << n) - 1)) == 0: &n
숫자 n이 있다고 가정합니다. n이 강한 소수인지 아닌지 확인해야 합니다. 우리가 알고 있듯이 가장 가까운 소수의 평균보다 큰 소수일 때 강한 소수라고 합니다. 36입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − num이 소수가 아니거나 2이면 거짓을 반환 마지막 :=숫자 - 1, 다음 :=숫자 + 1 next가 소수가 아닌 동안 do 다음 :=다음 + 1 last가 소수가 아닌 동안 do 마지막 :=마지막 - 1 평균 :=(마지막 + 다음) / 2 평균이면 참 반환 거짓을 반환 예시 이해를