본문 바로가기
인강/패스트캠퍼스_환급챌린지

[패스트캠퍼스 챌린지 27일차] 문제 풀이로 실전 응용력을 다지는 필수 자료구조

by 맙소사 2021. 10. 2.

 

Ch 01. 선형자료구조 - 08. 해쉬테이블과 딕셔너리(Hashtable & Dictionary)

 

이 친구들은 빠른것이 가장 큰 장점이다!

해시테이블은 자바의 해시맵과 비슷한 느낌이라고 생각하면 편한듯. 워낙 많이 써서 구조는 익숙하다.

딕셔너리도 다 비슷한 구조라서 쉽게 파악할 수 있어서 좋다!

 

해쉬테이블은 Key 값과 Value값을 기준으로 데이터를 분류하는 자료구조임. 미리 저장공간을 확보하기 때문에 메모리 효율이 좋지 않지만 검색 기능을 위주로 사용한다면 굉장히 빠르게 할 수 있다. 

Add, Remove 등을 사용해서 값을 추가하고 삭제할 수 있다.

해시테이블의 기본 개념은 해시 함수라는 곳에 키값을 넣어서 해시코드를 반환받으면 버킷이라는 저장공간에 매핑해줌.

Object 타입을 받아가는 형식이기 때문에 안에서 박싱과 언박싱이 계속해서 발생하기 때문에 성능 저하가 있다. 그래서 닷넷에서는 딕셔너리를 더 많이 사용하고 추천하고 있음.

 

아 이거 강의... 선생님 발음 가끔 뭉개지는 구간은 못알아듣겠어서 자막같은거 있으면 좋겠다... 

나머지 연산은 모드연산이라고도 한다고 함. 이게 뭔가 싶어서 한참 반복해서 들었다.

출처 : https://ko.wikipedia.org/wiki/%EB%82%98%EB%A8%B8%EC%A7%80

 


Ch 02. 알고리즘 - 01. 재귀호출(Recursive Call)

 

재귀호출이란 함수 내부에서 자기 자신을 반복적으로 호출하는 것이며,

반복 행위를 하는 함수를 재귀함수(Recursive Function)라고 한다.

알고리즘을 구현할 때 유용하지만 끝나는 지점을 지정하지 않으면 무한반복에 빠지게 되니 주의할 것!

반드시 종료 조건을 정해두고, 스택오버플로우를 조심하자.

데이터의 흐름을 보고 싶을 때 사용하기도 함. 팩토리얼(Factorial)을 생각하면 이해하기 쉬움!

 

* 팩토리얼(Factorial)

정규식

f(n) = n * f(n-1)
단 f(1) = 1

5! = 5 x 4 x 3 x 2 x 1 = 120

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int FuncFactorial(int nNumber)
{
    int nResult = 0;
    
    if(nNumber == 1)
    {
        nResult = 1;
    }
    else
    {
        nResult = nNumber * FuncFactorial(nNumber - 1);
    }    
    
    return nResult;
}

cs

 

그리고 대표적으로 피보나치 수열(Fibonacci numbers)이 있음.

* 피보나치 수열(Fibonacci numbers)

정규식

f(n)=1(n<=2)
f(n)=f(n-2)+f(n-1)(n>2)

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int Fibonacci(int nSequence)
{
    int nResult = 0;
    
    if(nSequence == 1 || nSequence ==2)
    {
        nResult = 1;
    }
    else
    {
        nResult = Fibonacci(nSequence -1) + Fibonacci(nSequence - 2);
    }    
    
    return nResult;
}
cs
 

https://bit.ly/37BpXiC
공백제외 : 총 1,118자 (1,683byte)

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #C#과유니티로배우는게임개발올인원패키지Online. #C#과 유니티로 배우는 게임 개발 올인원 패키지 Online.

댓글