[TIL] 0518
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
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 |