이 문제에서는 인접 목록으로 표시된 방향 그래프가 제공됩니다. 우리의 임무 BFS를 사용하여 한 정점에서 나머지 정점까지의 경로를 찾는 프로그램을 만드는 것 . BFS (Breadth First Search)는 그래프를 더 넓은 방향으로 탐색하고 반복에서 막다른 골목이 발생할 때 다음 정점이 검색을 시작하도록 기억하기 위해 대기열을 사용하는 알고리즘입니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 - 출력 S A <=S B <=A <=S C <=S D <=C <=S 해결 방법 이 문제를 해결하기 위
이 문제에서는 정렬된 배열 arr[]와 정수 값 x가 제공됩니다. 우리의 임무는 정렬된 배열에서 바닥을 찾는 프로그램을 만드는 것입니다. . 정렬된 배열의 X층 x보다 작거나 같은 배열의 가장 큰 요소입니다. 문제를 이해하기 위해 예를 들어보겠습니다. Input: arr[] = {2, 5, 6, 8, 9, 12, 21, 25}, x = 10 Output: 9 설명 − 위의 배열에서 9는 10보다 작거나 같은 가장 큰 수입니다. 해결 방법 문제에 대한 간단한 해결책은 배열을 순회하고 조건을 만족하는 요소를 찾는 것입니다. 배
이 문제에서는 정수 요소의 배열 rr[]이 제공됩니다. 우리의 임무는 동일한 배열에 있는 모든 요소의 바닥을 찾는 프로그램을 만드는 것입니다. 요소의 바닥이 존재하면 바닥을 인쇄하고 그렇지 않으면 -1을 인쇄합니다. 배열의 요소 바닥 배열의 요소보다 작거나 같은 가장 가까운 요소입니다. 문제를 이해하기 위해 예를 들어보겠습니다. Input: arr[] = {3, 1, 5 ,7, 8, 2} Output: 2 -1 3 5 7 1 솔루션 접근 방식 문제를 해결하는 방법은 중첩 루프를 사용하는 것입니다. 하나는 배열의 foreach
이 문제에서는 N개의 숫자와 정수 값 x로 구성된 배열 arr[]이 제공됩니다. 우리의 임무는 Binary Lifting을 사용하여 N개의 접두사 합에서 X보다 크거나 같은 첫 번째 요소를 찾는 프로그램을 만드는 것입니다. . 접두사 합계 배열 요소의 각 요소가 초기 배열의 해당 인덱스까지의 모든 요소의 합인 배열입니다. 예 - 배열[] ={5, 2, 9, 4, 1} prefixSumArray[] ={5, 7, 16, 20, 21} 문제를 이해하기 위해 예를 들어 보겠습니다. Input: arr[] = {5, 2, 9, 4
이 문제에서 N개의 정수 값과 크기가 N인 창으로 구성된 배열 arr[]이 주어집니다. 우리의 임무는 크기가 k인 모든 창에서 첫 번째 음의 정수를 찾는 프로그램을 만드는 것입니다. . 존재하는 경우 첫 번째 음수를 인쇄합니다. 그렇지 않으면 음수가 존재하지 않음을 나타내는 0을 인쇄합니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input: arr[] = {-2, 2, -1, 4, 3, -6}, k = 2 Output: -2, -1, -1, 0, -6 설명 - Size of window k = 2, {-2, 2}, fi
이 문제에서는 크기가 N인 연결 목록 LL이 제공됩니다. 우리의 작업은 연결 목록에서 반복되지 않는 항목을 찾는 프로그램을 만드는 것입니다. . 연결 목록은 링크를 통해 서로 연결된 일련의 데이터 구조입니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input: LL = 4 => 6 => 2 => 4 => 1 => 2 => 6 => 5 Output: 1 설명 - The elements with a single occurrence frequency are 1 and 6. Out of t
이 문제에서는 크기가 N인 문자열 str[]의 배열이 제공됩니다. 우리의 임무는 주어진 배열에서 역방향도 동일한 배열에 존재하는 첫 번째 문자열을 찾는 프로그램을 만드는 것입니다 . 문제를 이해하기 위해 예를 들어 보겠습니다. Input: str[] = ["python", "program", "C#", "language", "#C"] Output: C# 솔루션 접근 방식 문제를 해결하는 한 가지 방법은 문자열 배열의 각 요소를 직접 탐색하
이 문제에서는 크기가 N이고 정수 X인 문자열 str[]이 제공됩니다. 우리의 임무는 문자열에서 첫 번째 X 모음을 인쇄하는 프로그램을 만드는 것입니다. . 문자열에서 첫 번째 X 모음을 인쇄하고 X 모음보다 적은 경우 -1을 인쇄합니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input: str = "learn C programming language", X = 5 Output: e, a, o, a, i Vowels are a, e, i, o, u 해결 방법 문제에 대한 간단한 해결책은 문자열 문자를
이 문제에서 정수 값 N이 주어집니다. 우리의 임무는 N번째 짝수 피보나치 수를 찾는 것입니다. . 피보나치 수열은 두 개의 이전 숫자를 더하여 후속 숫자를 생성합니다. 피보나치 수열은 F0과 F1의 두 숫자로 시작합니다. F0 및 F1의 초기 값은 각각 0, 1 또는 1, 1을 취할 수 있습니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input : N = 4 Output : 144 솔루션 접근 방식 이 문제에 대한 간단한 해결책은 피보나치 수열의 모든 세 번째 숫자가 짝수이고 짝수의 시퀀스도 재귀 공식을 따른다는 사
이 문제에서는 2D 이진 행렬이 제공됩니다. 우리의 임무는 DFS를 사용하여 섬의 수를 찾는 것입니다. 섬 매트릭스에서 하나 이상의 연결된 1의 접지입니다. 문제를 이해하기 위해 예를 들어 보겠습니다. Input : bin[][] = {{ 1 0 0 0} {0 1 0 1} {0 0 0 0} {0 0 1 0}} Output : 3 ExplanationIslands are −bin00 - bin11bin13bin32 솔루션 접근 방식 DFS를 사용
이 문제에서는 2D 이진 행렬이 제공됩니다. 우리의 임무는 DFS를 사용하여 섬의 수를 찾는 것입니다. . 섬 매트릭스에서 1개 이상의 연결된 1의 접지입니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 bin[][] = {{ 1 0 0 0} {0 1 0 1} {0 0 0 0} {0 0 1 0}} 출력 3 설명 Islands are : bin00 - bin11 bin13 bin
이 문제에서 세 개의 정수 값 A, B, C가 주어집니다. 우리의 임무는 주어진 방정식에 대한 해의 수를 찾는 것입니다. . 방정식 X = B*Sm(X)^A + C 여기서 Sm(X)는 X의 자릿수의 합입니다. 위의 방정식을 만족하도록 X의 모든 값을 계산해야 합니다. 여기서 X는 1에서 10 사이의 숫자가 될 수 있습니다.9 . 문제를 이해하기 위해 예를 들어보겠습니다. 입력 A = 3, B = 6, C = 4 출력 3 해결 방법 문제를 해결하는 방법은 X 값의 개수를 세는 것입니다. 이를 위해서는 자릿수의 합이 중
이 문제에서 우리는 계단을 만들기 위해 제공된 벽돌의 수를 나타내는 숫자 N이 주어집니다. 우리의 임무는 f 계단 수 . 주어진 벽돌을 사용하여 계단을 만들어야 합니다. 각 단계는 마지막 단계보다 벽돌이 하나 더 필요합니다. 그리고 첫 번째 단계는 두 개의 벽돌 높이입니다. 우리는 벽돌로 만들 수 있는 그러한 단계의 수를 찾아야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 N = 40 출력 3 설명 단계 =1; 필요한 벽돌 =2; 사용된 총 벽돌 =2; 남은 벽돌 =38 단계 =2; 필요한 벽돌 =3;
이 문제에서는 0과 1로만 구성된 이진 배열 bin[]이 제공됩니다. 우리의 임무는 0의 개수를 찾는 것입니다. . 배열은 정렬됩니다. 즉, 모든 0은 1 뒤에 함께 정렬됩니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {1, 1, 1, 0, 0, 0, 0} 출력 4 솔루션 접근 방식 문제에 대한 간단한 해결책은 배열이 정렬된다는 사실을 사용하는 것입니다. 즉, 배열에서 0이 처음 나타나는 것을 사용하여 배열의 0의 수를 찾을 수 있습니다. 첫 번째 발생 이후와 마찬가지로 모든 값은 0이 됩니다.
이 문제에서는 소문자의 입력 문자열이 제공됩니다. 우리의 임무는 m 입력 문자열에서 최대 발생 문자 . 발생 빈도가 같은 값이 여러 개인 경우 사전순으로 더 작은 값을 인쇄해야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 string = “programming” 출력 g 솔루션 접근 방식 문제에 대한 해결책을 찾으려면 읽은 문자열을 정렬한 다음 문자열에서 가장 많이 발생하는 문자를 찾을 수 있도록 문자열을 탐색해야 합니다. 우리는 이 문제를 해결하기 위해 해싱 방식(해시 테이블 방식)
이 문제에서는 크기가 n인 arr[]이 제공됩니다. 우리의 임무는 범위에서 하나의 누락된 숫자를 찾는 것입니다. . 배열은 가장 작은 값에서 (가장 작은 + n)까지의 모든 값으로 구성됩니다. 범위의 한 요소가 배열에서 누락되었습니다. 그리고 이 누락된 값을 찾아야 합니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 arr[] = {4, 8, 5, 7} 출력 6 솔루션 접근 방식 이 문제에 대한 간단한 해결책은 배열을 정렬하여 누락된 요소를 검색한 다음 배열에는 없지만 범위에 있는 최소값부터 시작하여 범위의 첫
이 문제에서는 크기가 n인 arr[]이 제공됩니다. 우리의 임무는 f 배열의 유일한 다른 요소 . 배열에는 두 가지 다른 유형의 요소만 있습니다. 하나를 제외하고는 모든 요소가 동일합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {1, 1, 1, 2, 1, 1, 1, 1} 출력 2 솔루션 접근 방식 문제를 해결하기 위한 간단한 접근 방식은 배열을 탐색하고 배열의 다른 요소와 다른 요소를 찾아야 합니다. 이 접근 방식에는 O(N2의 시간 복잡도가 필요합니다. ). O(N)의 문제를 해결하는 또
이 문제에서는 크기가 n인 arr[]과 두 개의 정수와 b가 주어집니다. 우리의 임무는 f b번 나타나는 유일한 요소에서 . 배열의 모든 값은 배열에서 b번 발생하는 하나의 값을 제외하고 한 번 발생하며 해당 값을 찾아야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {3, 3, 3, 3, 5, 5, 5, 1, 1,1,1} a = 4, b = 3 출력 5 솔루션 접근 방식 문제에 대한 간단한 해결책은 각 요소의 발생을 계산한 다음 2D 행렬에 저장하는 것입니다. 그런 다음 행렬을 순회하여 발생
이 문제에서 배열에 하나의 값이 누락된 1에서 N까지의 값을 포함하는 크기 N의 arr[]이 제공됩니다. 우리의 임무는 정렬된 배열에서 유일하게 누락된 숫자를 찾는 것입니다. . 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {1, 2, 3, 5, 6, 7} 출력 4 솔루션 접근 방식 문제에 대한 간단한 해결책은 정렬된 배열을 선형으로 순회하는 것입니다. 그런 다음 arr[i] =(i + 1)이라는 사실을 사용하여 누락된 값을 확인합니다. 예시 1 솔루션 작동을 설명하는 프로그램 #include <
이 문제에서 우리는 배열에서 두 번 발생하는 하나의 값과 함께 1에서 N-1까지의 값을 포함하는 크기 N의 arr[]이 제공됩니다. 우리의 임무는 크기가 n인 정렬된 배열에서 유일하게 반복되는 요소를 찾는 것입니다. . 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {1, 2, 3, 4, 5, 5, 6, 7} 출력 5 해결 방법 문제를 해결하는 간단한 방법은 선형 검색을 사용하고 arr[i]와 arr[i+1]이 같은 값인지 확인하는 것입니다. 이 경우 반복되는 값인 arr[i]를 반환합니다. 예시 1