체스 판을 나타내는 n x n 행렬이 있다고 가정합니다. 1과 0이 있는데 1은 퀸을, 0은 빈 셀을 나타냅니다. 보드가 N-Queen 퍼즐에 대한 유효한 솔루션인지 여부를 확인해야 합니다. 우리가 알고 있듯이 보드는 두 개의 퀸이 서로 공격하지 않는 유효한 N-퀸 솔루션의 솔루션입니다. 따라서 입력이 다음과 같으면 그러면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. n :=행렬의 행 수 rows :=새 집합, cols :=새 집합, diags :=새 집합, rev_diags :=새 집합 0
2-9 사이의 숫자를 포함하는 문자열이 있다고 가정합니다. 숫자가 생성할 수 있는 모든 가능한 문자 조합을 찾아야 합니다. 전화 버튼과 마찬가지로 숫자를 문자로 매핑하는 방법이 아래에 나와 있습니다. 1은 일부 문자를 매핑하지만 문자는 매핑하지 않습니다. 1 2 b c 3 디에프 4 나는 5 j k 엘 6 아니오 7 피 q r s 8 유 v 9 wxyz * 0 # 예를 들어 주어진 문자열이 49이면 가능한 문자열은 [gw, gx, gy, gz, hw, hx, hy
회사의 일일 주식 시장 가격을 시간 순서대로 나타내는 가격 목록이 있다고 가정합니다. 인덱스 i의 값이 수익을 낼 때까지 기다려야 하는 최소 일수가 되는 동일한 길이의 목록을 찾아야 합니다. 수익을 낼 수 있는 방법이 없다면 값은 0이어야 합니다. 따라서 입력이 가격 =[4, 3, 5, 9, 7, 6]과 같으면 출력은 [2, 1, 1, 0, 0, 0]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. ans :=가격과 동일한 크기의 목록으로 0으로 채움 q :=새 목록 가격의 각 지수 i와 가격 p에 대해 다음을 수행
hh:mm 형식의 24시간 문자열이 있다고 가정하고 주어진 숫자를 재사용하여 형성할 수 있는 다음으로 가장 가까운 시간을 찾아야 합니다. 주어진 문자열의 숫자를 원하는 만큼 재사용할 수 있습니다. 따라서 입력이 s =03:15와 같으면 출력은 주어진 숫자를 반복하는 가장 가까운 시간 03:30과 같이 03:30이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. use :=두 자리 시간과 두 자리 최소 값이 있는 목록 가능 :=새로운 세트 backtrack() 함수를 정의합니다. 이것은 길을 가겠습니다 경로의 크기가 4
문자열 목록이 있다고 가정합니다. 우리는 또한 목록에서 다른 단어의 연결 단어의 수를 찾아야 합니다. 연결할 때 단어를 재사용하고 여러 번 연결할 수 있습니다. 따라서 입력이 단어 =[hello, world, helloworld, famous, worldfamous, programming]와 같은 경우 출력은 helloworld가 의 연결이므로 2가 됩니다. 안녕하세요와 세계. worldfamous는 world와 famous를 연결한 것입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. trie :=새 지도 단어의 각 단
단어 목록과 문자라는 문자열이 있다고 가정하고 주어진 문자를 재배열하여 만들 수 있는 가장 긴 단어의 크기를 찾아야 합니다. 문자에 별표 문자(*)가 있을 수 있으며 모든 문자와 일치할 수 있습니다. 그리고 모든 문자를 사용할 필요는 없습니다. 따라서 입력이 단어 =[prince, rice, price, limit, hello] letters =*r**ce*인 경우 출력은 6이 됩니다. 우리가 만들 수 있는 가장 긴 단어는 prince 길이가 6입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. has :=문자로 된 각
이진 트리가 있다고 가정하고 왼쪽과 오른쪽 자식을 번갈아 가며 아래로 내려가는 가장 긴 경로를 찾아야 합니다. 따라서 입력이 다음과 같으면 대체 경로가 [2, 4, 5, 7, 8]이므로 출력은 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 루트가 null이면 0을 반환 dfs() 함수를 정의합니다. 노드, 개수, 플래그가 필요합니다. 노드가 null이 아니면 플래그가 True와 같으면 a :=dfs(노드 왼쪽, 개수 + 1, 거짓) b :=dfs(노드 오른쪽, 1, True) 그렇지 않으면 플래그
문자열 s와 다른 값 k가 있다고 가정합니다. s에서 각 문자를 가져와서 왼쪽 위에서 오른쪽 아래로 대각선으로 시작하여 k번째 줄에 도달할 때까지 새 문자열을 찾은 다음 오른쪽 위로 올라가는 식으로 계속 진행해야 합니다. 따라서 입력이 s =ilovepythonprogramming k =5와 같으면 출력은 다음과 같습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. line :=새 지도 cnt :=0 델타:=1 s의 각 인덱스 i와 문자 c에 대해 다음을 수행합니다. 줄 끝에 (c, i) 삽입[cnt] cnt :=c
포트라고 하는 목록 목록이 있다고 가정합니다. 여기서 포트[i]는 포트 i가 연결된 포트 목록을 나타냅니다. 또한 포트 i에서 포트 j로의 배송 요청이 있음을 나타내는 시퀀스 [i, j]의 각 목록이 있는 배송이라는 또 다른 목록 목록이 있습니다. 그리고 포트 i에서 포트 j까지 배송하는 비용은 두 포트에서 가장 짧은 경로의 길이이므로 모든 배송을 완료하는 데 필요한 총 비용을 찾아야 합니다. 4입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다 - n :=포트 크기 dist :=포트 목록의 인접 행렬 0에서 n 사이
방향성 그래프의 인접 목록이 있다고 가정합니다. 여기서 인덱스 i의 각 목록은 노드 i의 연결된 노드로 표시됩니다. 목표값도 있습니다. 목표를 포함하는 가장 짧은 주기의 길이를 찾아야 합니다. 솔루션이 없으면 -1을 반환합니다. 따라서 입력이 다음과 같으면 0이 있지만 이것은 다음과 같습니다. 가장 짧지 않습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. - 방문함:=새로운 세트 l :=요소 대상이 있는 목록입니다. 길이:=0 l이 비어 있지 않은 동안 do 길이 :=길이 + 1 nl :=새 목록 l의 각 u에 대
각 값이 함께 스카이다이빙하려는 사람들의 그룹을 나타내는 nums라는 숫자 목록이 있다고 가정합니다. 그리고 스카이다이빙을 신청할 수 있는 날을 나타내는 또 다른 값 k가 있습니다. 우리는 k일 이내에 모든 요청을 이행할 수 있는 데 필요한 비행기의 최소 수용 인원을 찾아야 합니다. 요청은 주어진 순서대로 이행되어야 하며 비행기는 하루에 한 번만 비행할 수 있습니다. 따라서 입력이 nums =[16, 12, 18, 11, 13], k =3과 같으면 출력은 28이 됩니다. 28인 비행기는 주어진 요청을 [16, 12], [ 18],
nums라고 하는 숫자 목록이 있고 로켓의 크기와 방향을 나타내는 목록이 있다고 가정합니다. 양의 정수는 오른쪽을 나타내고 음수는 왼쪽을 나타냅니다. 그리고 숫자의 절대값은 로켓의 크기를 나타냅니다. 이제 두 개의 로켓이 충돌할 때 작은 로켓은 파괴되고 큰 로켓은 변경되지 않고 계속 여행을 계속합니다. 같은 크기의 로켓이 충돌하면 둘 다 파괴됩니다. 두 로켓이 같은 방향으로 움직이면 충돌하지 않습니다(로켓 속도가 같다고 가정). 모든 충돌 후에 로켓의 상태를 찾아야 합니다. 따라서 입력이 nums =[3, 8, 5, -5]와 같으
2D 이진 행렬이 있다고 가정하고 모두 1인 정사각형 부분행렬의 총 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 1 12(1 x 1) 정사각형, 4(2 x 2) 정사각형 및 1(3 x 3) 정사각형이 있으므로 출력은 17이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res :=0 행렬의 행 수까지 범위 0에 있는 i에 대해 행렬의 열 개수까지 범위 0
푸시라고 하는 숫자 목록과 팝이라고 하는 또 다른 숫자 목록이 있다고 가정하면 이것이 스택 푸시 및 팝 작업의 유효한 시퀀스인지 여부를 확인해야 합니다. 따라서 입력이 pushs =[1, 2, 5, 7, 9] pops =[2, 1, 9, 7, 5]인 경우 [1, 2]를 누를 수 있으므로 출력은 True가 됩니다. 먼저 둘 다 터트립니다. 그런 다음 [5, 7, 9]를 누르고 모두 터뜨립니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − s :=새 스택 i :=0 푸시의 각 요소에 대해 다음을 수행합니다. ele을 s로
동일한 간격의 시간 간격에서 자동차의 위치를 나타내는 숫자 목록이 있다고 가정합니다. 자동차가 일정한 속도로 이동하는 가장 긴 하위 목록의 크기를 찾아야 합니다. 따라서 입력이 위치 =[0, 4, 8, 12, 6, 4, 0]과 같으면 하위 목록이 [0, 4, 8, 12]이므로 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − j :=1 max_cnt :=0, 현재 :=0 거리:=|위치[0] - 위치[1]| j <위치의 크기인 동안 do 이전 :=위치[j - 1] 거리가 |positions[j]와 같은
숫자 n이 있다고 가정하면 n자리의 스테핑 숫자의 수를 찾아야 합니다. 우리가 알고 있듯이 모든 인접한 숫자의 절대 차이가 1일 때 숫자를 스테핑 숫자라고 합니다. 따라서 숫자가 123이면 이것은 스테핑 숫자이지만 124는 그렇지 않습니다. 답이 매우 크면 결과 모드 10^9 + 7을 반환합니다. 따라서 입력이 n =2와 같으면 스테핑 번호가 [12, 23, 34, 45, 56, 67, 78, 89, 98, 87, 76, 65, 54, 43, 32, 21, 10] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m :=10
각 문자열에 두 개의 문자 A와 B가 포함된 문자열 목록이 있다고 가정합니다. 우리는 두 개의 값과 b를 가지고 있습니다. 우리는 형성할 수 있는 최대 문자열 수를 찾아야 합니다. 재사용 없이 최대 A 개수와 최대 b개 B를 사용할 수 있습니다. 따라서 입력이 문자열 =[AAABB, AABB, AA, BB] a =4 b =2인 경우 출력은 2가 됩니다. 4 A 와 2개의 B[AABB,AA]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 쌍:=새 목록 문자열의 각 w에 대해 다음을 수행합니다. A :=w의 A 수 B :=
각 숫자가 후보자에 대한 투표를 나타내는 nums라는 숫자 목록이 있다고 가정합니다. floor(n/3)개 이상 득표한 후보자의 ID를 내림차순으로 찾아야 합니다. 따라서 입력이 nums =[3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7]과 같으면 출력은 [6, 7]이 됩니다. 투표율. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=새로운 빈 세트 목록 번호 정렬 i :=0 n :=숫자 크기 i <숫자의 크기인 동안 do (n / 3), nums[i]를 ans에 삽입 나는 :=나는 + (n /
소스와 타겟이라는 두 개의 문자열이 있다고 가정하고 연결하면 타겟과 동일하도록 구성할 수 있는 소스의 하위 시퀀스의 최소 수를 찾아야 합니다. 해당 결과가 없으면 -1을 반환합니다. 따라서 입력이 source =xyz target =xyzyzz와 같으면 출력은 [xyz + yz + z]를 연결할 수 있으므로 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − s_size :=s의 크기, t_size :=t의 크기 concat_count :=0, target_idx :=0 target_idx
단어 목록과 문자열 s가 있다고 가정하고 단어 목록에서 s의 하위 시퀀스인 문자열 수를 찾아야 합니다. 따라서 입력이 단어 =[xz, xw, y] s =xyz와 같으면 xz와 y가 xyz의 하위 시퀀스이므로 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=0 d :=빈 지도 단어의 각 단어에 대해 수행 d[word[0]] 끝에 단어 삽입 s의 각 c에 대해 l :=d[c] d[c] :=새 목록 l의 각 단어에 대해 do 단어의 크기가 1이면 ans :=ans + 1 그렇지 않으면