무한 평면이 있다고 가정하고 로봇은 처음에 위치 (0, 0)에 서서 북쪽을 향하고 있습니다. 로봇은 세 가지 명령 중 하나를 받을 수 있습니다. - G - 1단위 직진; L - 왼쪽 방향으로 90도 회전, R - 오른쪽 방향으로 90도 회전합니다. 로봇은 주어진 명령을 순서대로 수행하고 명령은 영원히 반복됩니다. 로봇이 원을 떠나지 않도록 평면에 원이 존재하는지 확인해야 합니다. 따라서 입력이 [GGLLGG]와 같으면 대답은 true가 됩니다. (0,0)에서 (0,2)까지 계속 반복되므로 이것은 닫힌 경로이며
=1인 단어 [word_1, word_2, ..., word_k]의 시퀀스입니다. 여기서 word_1은 word_2의 선행 항목이고, word_2는 word_3의 선행 항목입니다. 주어진 단어 목록에서 선택한 단어를 사용하여 단어 체인의 가능한 가장 긴 길이를 찾아야 합니다. 따라서 입력이 [a,b,ba,bca,bda,bdca]와 같으면 가장 긴 체인 중 하나가 [ a, ba, bda, bdca]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 맵 정의 dp, n :=단어 배열의 크기 길이에 따라 단어 배열 정렬
암석 컬렉션이 있다고 가정하고 이제 각 암석에는 양의 정수 가중치가 있습니다. 각 턴에서 우리는 두 개의 돌을 선택하고 함께 부수십시오. 돌에 x <=y인 가중치 x와 y가 있는 경우. 이 스매시의 결과는 - x =y이면 두 돌이 완전히 파괴됩니다. x !=y이면 무게 x의 돌은 완전히 파괴되고 무게 y의 돌은 새로운 무게 y-x를 갖습니다. 마지막으로 최대 1개의 스톤이 남아 있습니다. 우리는 이 돌의 가능한 가장 작은 무게를 찾아야 합니다(남은 돌이 없으면 무게는 0입니다.) 예를 들어 입력이 [2,7,4,1,
문자열이 있다고 가정하면 몇 개의 문자를 삭제하여 해당 문자열의 하위 시퀀스를 형성할 수 있습니다(삭제가 없을 수도 있음). 따라서 두 개의 문자열 소스와 대상이 있는 경우 연결이 대상과 같도록 소스의 하위 시퀀스의 최소 수를 찾아야 합니다. 작업이 불가능한 경우 -1을 반환합니다. 따라서 소스가 abc이고 대상이 abcbc이면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 가능하다는 문자열을 정의하십시오. 이것은 s와 t를 입력으로 받습니다. 지도 만들기 m s mark m[c]의 각
가격 배열이 P [p1,p2...,pn]이고 목표 값이 있다고 가정하고 각 가격 Pi를 Roundi(Pi)로 반올림하여 [Round1(P1),Round2(P2) ...,Roundn(Pn)] 합계는 주어진 목표 값입니다. 여기에서 각 연산 Roundi(pi)는 Floor(Pi) 또는 Ceil(Pi)일 수 있습니다. 반올림된 배열을 대상으로 합산하는 것이 불가능한 경우 문자열 -1을 반환해야 합니다. 그렇지 않으면 가장 작은 반올림 오류를 반환합니다. 이 오류는 -로 정의됩니다(소수점 뒤에 세 자리가 있는 문자열로). $\displ
고유한 숫자의 정렬된 배열 A가 있다고 가정하고 배열의 가장 왼쪽 숫자부터 시작하여 K번째 누락된 숫자를 찾아야 합니다. 따라서 배열이 [4,7,9,10]이고 k =1이면 요소는 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=배열의 크기, low :=0, high :=n – 1 nums[n - 1] – nums[0] + 1 – n
길이가 같은 문자열 A와 B가 있다고 가정하면 이제 A[i]와 B[i]가 동일한 문자라고 말할 수 있습니다. 예를 들어 A =abc이고 B =cde이면 a =c, b =d 및 c =e입니다. 등가 문자는 모든 등가 관계의 일반적인 규칙을 따릅니다. 반사성:a =a 대칭:a =b는 b =a를 의미합니다. 전이성:a =b 및 b =c는 a =c를 의미합니다. 이제 예를 들어 위의 A와 B의 동등성 정보가 주어지면 S =eed, acd 및 aab는 동등한 문자열이고 aab는 사전순으로 S의 가장 작은 동등한 문자열입
문자열 S가 있다고 가정하고 가장 긴 반복 부분 문자열의 길이를 찾아야 합니다. 반복되는 하위 문자열이 없으면 0을 반환합니다. 따라서 문자열이 abbaba와 같으면 출력은 2가 됩니다. 가장 오래 반복되는 하위 문자열은 ab 또는 ba입니다. 이러한 방식으로 형성할 수 있는 모든 단어를 사전순으로 반환합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=S의 크기 set S :=S로 연결된 하나의 공백 설정 ret :=0 (n + 1) x (n + 1) 크기의 행렬 dp 하나 생성 범위
단어 목록을 나타내는 문자열 S가 있다고 가정합니다. 여기에서 단어의 각 문자에는 1개 이상의 옵션이 있습니다. 옵션이 하나만 있는 경우 문자는 있는 그대로 표시됩니다. 둘 이상의 옵션이 있는 경우 중괄호로 옵션을 구분합니다. 예를 들어 {a,b,c}는 [a, b, c] 옵션을 나타냅니다. 이제 예를 들어 입력이 {a,b,c}d{e,f}와 같은 경우 [ade, adf, bde, bdf, cde, cdf]. 이러한 방식으로 형성할 수 있는 모든 단어를 사전순으로 반환합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. −
길이가 같은 두 개의 정수 배열이 있다고 가정하고 최대값을 찾아야 합니다. |arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j|. 여기서 최대값은 모든 0 <=i, j
두 개의 문자열 text1과 text2가 있다고 가정하고 가장 긴 공통 부분 시퀀스의 길이를 반환해야 합니다. 문자열의 하위 시퀀스는 나머지 문자의 상대적 순서를 변경하지 않고 일부 문자가 삭제된 원래 문자열에서 생성된 새 문자열입니다. (예를 들어 abe는 abcde의 하위 시퀀스이지만 adc는 그렇지 않습니다). 두 문자열의 공통 하위 시퀀스는 두 문자열에 공통적인 하위 시퀀스입니다. 따라서 공통 부분 수열이 없으면 0을 반환합니다. 입력이 abcde 및 ace와 같으면 결과는 3이 됩니다. 이 문제를 해결하기 위해 다음 단계
문자열 텍스트가 있다고 가정하고 문자열에서 두 문자를 교환할 수 있습니다. 반복되는 문자가 있는 가장 긴 부분 문자열의 길이를 찾아야 합니다. 따라서 입력이 ababa와 같으면 결과는 3이 됩니다. 첫 번째 b를 마지막 a로 바꾸거나 마지막 b를 첫 번째 a로 바꾸면 가장 오래 반복되는 문자는 aaa가 되므로 길이는 다음과 같습니다. 3. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 맵 cnt를 정의하고, ret :=1, j :=0, n :=텍스트 크기, v :=0으로 설정하고, x라는 세트를 정의하고, m이라는 또
연결 목록의 머리 부분을 지정했다고 가정합니다. 그러한 시퀀스가 없을 때까지 합이 0인 연속적인 노드 시퀀스를 반복적으로 삭제해야 합니다. 따라서 그렇게 한 후에 최종 연결 목록의 머리를 반환해야 합니다. 따라서 목록이 [1,2,-3,3,1]과 같으면 결과는 [3,1]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dummy라는 노드를 만들고 여기에 0을 저장하고 dummy :=head 다음으로 설정합니다. 하나의 맵 m을 만들고 키 0에 대한 더미를 m에 저장하고 합계 =0으로 설정 머리가 n
이 튜토리얼에서는 C++에서 STL을 사용하여 다양한 병합 작업을 이해하는 프로그램에 대해 설명합니다. merge() 함수는 새 컨테이너도 정렬되는 방식으로 두 개의 정렬된 컨테이너를 병합하는 데 사용됩니다. 추가 Include()는 첫 번째 컨테이너의 요소가 두 번째 컨테이너에 있는지 확인하는 데 사용됩니다. 예시 #include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ v
이 튜토리얼에서는 벡터, 맵 및 쌍의 내용을 인쇄하기 위해 C++에서 연산자 오버로딩을 이해하는 프로그램에 대해 논의할 것입니다. 연산자 오버로딩은 사용자 정의 개체에 대해 작동하고 유사한 방식으로 그에 따라 작업할 수 있는 기능을 제공하는 연산자의 기능입니다. 예시 벡터 #include <iostream> #include <vector> using namespace std; template <typename T> ostream& operator<<(ostream& os,
이 튜토리얼에서는 C++에서 생성자/소멸자의 순서를 이해하는 프로그램에 대해 논의할 것입니다. 생성자/소멸자의 순서는 클래스 상속 시 다양한 클래스의 생성자가 호출되는 패턴을 말합니다. 예시 #include <iostream> using namespace std; //parent class class Parent{ public: Parent(){ cout << "Inside base class" <<
이 튜토리얼에서는 정렬된 집합과 GNU C++ PBDS를 이해하는 프로그램에 대해 논의할 것입니다. 정렬된 집합은 STL 라이브러리에 있는 것과 다른 정책 기반 구조입니다. 정렬된 집합은 모든 요소를 정렬된 순서로 유지하고 중복 값을 허용하지 않습니다. 예시 #include <iostream> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace
이 튜토리얼에서는 C++의 출력 반복자를 이해하는 프로그램에 대해 논의할 것입니다. 출력 반복기는 주요 5개 반복기의 일부입니다. 값을 할당할 수 있지만 값을 가져오기 위해 액세스할 수 없는 방식으로 입력 반복자와 반대로 작동합니다. 예시 #include<iostream> #include<vector> using namespace std; int main(){ vector<int>v1 = {1, 2, 3, 4, 5}; //declaring iterato
이 튜토리얼에서는 C++에서 오버라이드 키워드를 이해하는 프로그램에 대해 논의할 것입니다. Override 키워드는 기본 클래스에서 함수를 재정의하고 자식 클래스에서 동일한 서명으로 별도의 함수를 정의하는 데 사용됩니다. 예시 #include <iostream> using namespace std; class Base { public: //function to be override virtual void func() { &nb
이 튜토리얼에서는 C++ 표준 템플릿 라이브러리에서 쌍을 이해하는 프로그램에 대해 논의할 것입니다. 쌍은 두 개의 값을 포함하는 유틸리티 헤더에 정의된 컨테이너입니다. 두 값을 결합하여 유형이 다른 경우에도 연결하는 데 사용됩니다. 예시 #include <iostream> #include <utility> using namespace std; int main(){ //initializing a pair pair <int, char> PAIR1 ; &nb