Problem Description
        Given a list of words and a word to search for, the task is to check whether the search word is included in the word list. This problem can
        be solved using a dictionary data structure. This can be easily implemented in C# using the Dictionary class.
    
Algorithm Problem
Problem
        Given a list of words words, write the following checkWords method. 
        
        The checkWords method takes a list of strings and a string as parameters, and it should return true if the 
        string is in the list, and false if it is not.
        
        Example
        
        Input: words = ["apple", "banana", "cherry"], searchWord = "banana" 
        
        Output: true
    Solution
        One of the most efficient methods to solve this problem is by using a hash table. By using a hash table to store the list of words
        beforehand, we can find words with O(1) time complexity during searches. Utilizing C#’s Dictionary class allows
        us to implement this, so we will solve the problem using the following steps.
    
Step 1: Convert the Word List to a Dictionary
        First, we will convert the given word list into a Dictionary. Each word will be used as a key and the value will be
        an unnecessary empty string.
    
        // C# code
        using System;
        using System.Collections.Generic;
        public class DictionarySearch
        {
            private Dictionary wordDictionary;
            public DictionarySearch(List words)
            {
                wordDictionary = new Dictionary();
                foreach (var word in words)
                {
                    wordDictionary[word] = true; // Value is not needed, set to true
                }
            }
        }
           Step 2: Write the Word Search Method
        Now, we will write the checkWords method. This method will check whether the word being searched exists in the dictionary.
    
        public bool CheckWords(string searchWord)
        {
            return wordDictionary.ContainsKey(searchWord);
        }
        Step 3: Implement the Final Class and Method
We will combine the above steps to complete the class as a final solution.
        using System;
        using System.Collections.Generic;
        public class DictionarySearch
        {
            private Dictionary wordDictionary;
            public DictionarySearch(List words)
            {
                wordDictionary = new Dictionary();
                foreach (var word in words)
                {
                    wordDictionary[word] = true;
                }
            }
            public bool CheckWords(string searchWord)
            {
                return wordDictionary.ContainsKey(searchWord);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                List words = new List { "apple", "banana", "cherry" };
                DictionarySearch dictionarySearch = new DictionarySearch(words);
                Console.WriteLine(dictionarySearch.CheckWords("banana")); // Output: true
                Console.WriteLine(dictionarySearch.CheckWords("grape")); // Output: false
            }
        }
             Complexity Analysis
        – Time complexity: O(1) – Using a hash table to store and search for words is optimally performed in O(1) time.
        – Space complexity: O(n) – Proportional to the size n of the given word list.
    
Key Points
        – Using the Dictionary class is key to solving the problem. It ensures fast search speeds.
        – In string comparisons, the results may differ based on case sensitivity, so caution is needed.
        – After running the overall code, it is necessary to validate it through various test cases.
    
Conclusion
        In this tutorial, we explained how to solve the dictionary search problem using C#. We demonstrated that a data structure approach
        utilizing a hash table can efficiently satisfy the problem’s given conditions. The use of such data structures is frequently encountered
        in actual coding tests, so practicing in advance is important.