[TIL] 0518

IT/TIL(Today I Learnt)|2022. 5. 19. 09:58

Today I Learnt 

 

0518:

 

 Todo:

 

 

711 Project React  Progress: 80%

711 Reflection Progress 0%

666 React Native Project Progress: 0%

664 C# Algorithm tool management system 10%

 

Coding test 

Interview 

 

DB schema & API Change 

 

할게 이렇게 많은데도 코테 준비한다고 알고리즘을 보고있으니... 

Seek.com에 정말 취업하고싶은건가? 

왜이렇게 집착하는거같지? 안돼면 다른데 가면돼지 ? 

학교숙제부터하자... 졸업은 해야대니깐..

 

어쨋든 오늘 배운것 :

 

 

 

https://riedel.tistory.com/445

 

코딩테스트 준비 어떻게 해야 할까? (feat. 현직자가 알려주는 코테 준비하는 방법)

안녕하세요~ 테크 기업 전문 취업 전략 컨설턴트 동사힐입니다. 😊 오늘은 많은 주니어 개발자들이 고민하는 코딩테스트 준비 어떻게 해야 할까?에 대해서 간단하게 살펴보고자 합니다. 저는

riedel.tistory.com

 

https://www.youtube.com/watch?v=Peq4GCPNC5c 

 

C#

 

더보기

C# 

https://www.youtube.com/watch?v=iKDhgVoXVTk 

Hash Table

 linked list 를 이용한 hash table 

c#에서 제공하는 hash table을 사용하지않고 직접만들어야하는것같아서 유튜브 보고 배껴옴.

인제 이거를 login/singup/authntication 으로 바꿔서 만들어야할것같다.

 

lniked list가 아직 이해가 덜됫는지 완벽하게이해를못한다. 

동영상 다시봐야겟다. 

 

 

using System;
namespace _664_Assignment
{
    public class MemberCollection2
    {
        public MemberCollection2()
        {
        }


        public class Node<T>
        {
            public Node<T> Next { get; set; }
            public string Key { get; set; }
            public T Value { get; set; }
        }

        public class Hashtable<T>
        {
            private readonly Node<T>[] _buckets;

            public Hashtable(int size)
            {
                _buckets = new Node<T>[size];
            }

            public T Get(string key)
            {
                //ValidateKey(key);

                var (_, node) = GetNodeByKey(key);  // _ for the previous node. we dont use it 
                if (node == null) throw
                        new ArgumentNullException(
                            nameof(key), $"The user '{key}'is not registred");
                return node.Value;
            }

            public void Add(string key, T item)
            {
                //ValidateKey(key);

                var valueNode = new Node<T> { Key = key, Value = item, Next = null };
                int position = GetBucketByKey(key);
                Node<T> listNode = _buckets[position];

                if (null == listNode)
                {
                    _buckets[position] = valueNode;


                }
                else
                {
                    while (null != listNode.Next)
                    {
                        listNode = listNode.Next;
                    }
                    listNode.Next = valueNode;
                }
               


            }




            protected (Node<T> previous, Node<T> current) GetNodeByKey(string key)
            {
                int position = GetBucketByKey(key);
                Node<T> listNode = _buckets[position];
                Node<T> previous = null;

                while (null != listNode)
                {
                    if (listNode.Key == key) return (previous, listNode);
                    previous = listNode;
                    listNode = listNode.Next;
                }

                return (null, null);
            }

            public int GetBucketByKey(string key)

            {
                int place = key[0] % _buckets.Length;
                // more mature hash function    Math.Abs(key.GetHashCode()%_bucktes.Length);
                return place;
            }

            public Boolean Remove(string key)
            {

                //ValidateKey(key)
                int position = GetBucketByKey(key);
                var (previous, current) = GetNodeByKey(key);
                if (null == current) return false; 
                if(null == previous) // if node is the first element 
                {
                    _buckets[position] = null;
                    return true;
                }
                previous.Next = current.Next;
                return true;

            }

            public Boolean ContainsKey(string key)
            {
                //Validate(key);
                var (_, node) = GetNodeByKey(key);
                return null != node;

            }


            protected void ValidateKey(string key)
            {
                if (string.IsNullOrWhiteSpace(key))
                    throw new ArgumentNullException(nameof(key));
            } // check if the value is empty or not 
        }
    }
}

 

 

 

 

static void Main(string[] args)
        {

            var members = new MemberCollection2.Hashtable<int>(4);
            Console.WriteLine(members.GetBucketByKey("skyler"));
            Console.WriteLine(members.GetBucketByKey("scarlett"));
            Console.WriteLine(members.GetBucketByKey("minsu"));

            members.Add("skyler", 1);
            members.Add("scarlett", 2);
            members.Add("minsu", 3);

            Console.WriteLine("now check ");
            Console.ReadLine();

            Console.WriteLine(members.Get("skyler"));
            Console.WriteLine(members.Get("scarlett"));
            Console.WriteLine(members.Get("minsu"));

            try
            {
                Console.WriteLine(members.Get("John"));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine(members.Remove("minsu"));
            Console.WriteLine(members.Remove("minsu"));
            Console.WriteLine(members.Remove("skyler"));
            Console.WriteLine(members.Remove("skyler"));
            
         }

 

 

Interview 는 동영상을 업데이트하는 거엿는데 ,

문제는 :

 

1.  좋은팀에서 소속되어 프로젝트를 끝낸경험?  무엇이 좋은팀을만드는지? 무슨롤이였는지?

2. 팀과 나의 의견이 다르면 어떻게하는지?

3. 실수를 하면 어떻게하는지 ? 무슨 레슨을 배우는지 ? 

 

 

금요일까지 코테만 보면된다...

코테보기싫어헣ㅎㅎ

 

 

반응형

'IT > TIL(Today I Learnt)' 카테고리의 다른 글

[TIL] 0520 코딩테스트 Seek.com  (0) 2022.05.21
[TIL] 0519  (2) 2022.05.20
[TIL] 0517 코딩 테스트  (0) 2022.05.18
[TIL] 0516 c#숙제  (2) 2022.05.16
[TIL] 0515  (1) 2022.05.15

댓글()