본문 바로가기
728x90
반응형

HackerRank38

lego blocks 이 문제는 다이나믹 프로그래밍(Dynamic Programming)을 사용하여 풀 수 있는데, 공식적인 해결 방법을 제공하기보다는 알고리즘의 핵심 아이디어를 설명하겠습니다. 이 문제를 해결하려면 다음 단계를 수행해야 합니다: 각 레고 블록의 너비를 입력으로 받습니다. 각 줄마다 레고 블록을 쌓아보면서 가능한 모든 높이를 계산합니다. 가능한 모든 높이를 저장하는 배열을 만듭니다. 모든 줄에 대해 가능한 높이를 구한 후, 가능한 높이 배열을 기반으로 각 줄의 최대 높이를 계산합니다. 모든 줄의 최대 높이를 곱하여 결과를 출력합니다. 다음은 이 문제를 C#으로 구현한 코드입니다. 이 코드는 주요 아이디어를 나타내며, 실제로 동작하는 코드를 완성하려면 입력 처리 및 출력 등을 추가해야 할 것입니다. using .. 2023. 10. 5.
Tree : Top View 이진 트리의 "상단 뷰"를 찾는 문제입니다. 상단 뷰란 이진 트리를 위에서 아래로 내려다 볼 때, 가장 왼쪽 노드부터 가장 오른쪽 노드까지 순서대로 보이는 노드들의 값을 출력하는 것을 의미합니다. 상단 뷰를 찾기 위해서는 이진 트리의 루트 노드에서 시작하여 왼쪽으로 이동할 때는 왼쪽 자식 노드로, 오른쪽으로 이동할 때는 오른쪽 자식 노드로 이동하면서 노드들의 값을 출력해야 합니다. 이 때, 같은 수평 레벨에 여러 노드가 있는 경우에는 가장 왼쪽 노드를 출력해야 합니다. 문제의 목표는 주어진 이진 트리에서 상단 뷰에 있는 노드들의 값을 순서대로 출력하는 것 BFS(Breadth-First Search) 알고리즘을 사용하여 풀 수 있습니다. BFS를 사용하면 각 노드의 수평 거리를 추적할 수 있으며, 각 수.. 2023. 10. 5.
Tree: Height of a Binary Tree 이진 트리의 높이를 계산하는 간단한 문제 // 이진 트리 노드 정의 struct Node { int data; Node* left; Node* right; Node(int data) : data(data), left(nullptr), right(nullptr) {} }; // 이진 트리의 높이를 계산하는 함수 int height(Node* root) { if (root == nullptr) { return -1; // 루트 노드가 없으면 높이를 -1로 간주 } int leftHeight = height(root->left); int rightHeight = height(root->right); // 더 큰 서브트리의 높이에 1을 더해 현재 노드의 높이를 계산 return (leftHeight > righ.. 2023. 10. 4.
Tree: Inorder Traversal Inorder Traversal (중위 순회): 왼쪽 서브트리를 중위 순회한 후 루트 노드를 방문하고, 그 다음에 오른쪽 서브트리를 중위 순회하는 방법입니다. 순서: 왼쪽 서브트리 - 루트 - 오른쪽 서브트리 중위 순회는 이진 탐색 트리에서 노드를 오름차순으로 방문하는 데 주로 사용됩니다. class Node { public: int data; Node *left; Node *right; Node(int d) { data = d; left = NULL; right = NULL; } }; void inOrder(Node *root) { if(root == nullptr) return; inOrder(root->left); cout 2023. 10. 4.
Tree: Preorder Traversal Preorder Traversal (전위 순회): 루트 노드를 먼저 방문하고, 왼쪽 서브트리를 전위 순회한 후에 오른쪽 서브트리를 전위 순회하는 방법입니다. 순서: 루트 - 왼쪽 서브트리 - 오른쪽 서브트리 전위 순회는 트리를 복제하거나 트리의 구조를 복원하는 데 유용합니다. class Node { public: int data; Node *left; Node *right; Node(int d) { data = d; left = NULL; right = NULL; } }; */ void preOrder(Node *root) { if(root == nullptr) return; cout 2023. 10. 4.
Tree: Postorder Traversal Postorder Traversal (후위 순회): 왼쪽 서브트리와 오른쪽 서브트리를 후위 순회한 후에 루트 노드를 방문하는 방법입니다. 순서: 왼쪽 서브트리 - 오른쪽 서브트리 - 루트 후위 순회는 트리에서 리프 노드부터 시작하여 루트 노드로 이동하는 데 사용됩니다. 예를 들어, 메모리를 해제하는 데 유용합니다. class Node { public: int data; Node *left; Node *right; Node(int d) { data = d; left = NULL; right = NULL; } }; */ void postOrder(Node *root) { if(root == nullptr) return; postOrder(root->left); postOrder(root->right); cout 2023. 10. 4.
Diagonal Difference C# public static int diagonalDifference(int n,List arr) { int LTR = 0, RTL = 0; for(int i = 0;i 2023. 10. 4.
728x90
반응형