티스토리 뷰

[C# Dictionary] 메모화 객체 사용하는 방법 효율적!

C#Dictionary사용하기


메모화 객체인 C#의 Dictionary객체는 간단하게

 설명하면, 말 그대로 한 번 계산 한 값을 메모해

 놓을 수 있는 객체입니다. 반복적인 작업으로 


우리가 프로그래밍을 할 때 한 번 구해놓았던 

값을 또 계산하지 않아도 되게 해주는 것이죠. 

이 객체를 사용하면 효율적인 속도를 내는 

프로그램을 작성할 수 있습니다.


Dictionary를 이용한 메모화 프로그래밍을 

설명하기 위한 예시로 피보나치 수열을 들자면,

 만약에 i를 매개변수로 받아서 피보나치수열의

 i번째 수를 반환받는다고합시다. 


그런데 처음에 5를 입력했다고 치면 피보나치는

 0부터 5까지 6번의 연산을 하게됩니다. 

이렇게 작은 수라면 연산을 할 때 상관이 없지만 


계속적인 값을 만약에 10으로 주면 또 

영부터 십까지 20으로 주면 영부터 이십까지 또

 계산해야해서 비효율적인 속도를 낼 수 있습니다.

 이때 메모화를 이용하면 되겠습니다.

이용방법은 간단합니다.

  • Dictionary<[key값타입],[value값타입]> [인스턴스명] = new Dictionary<[key값타입],[value값타입]>();

위 처럼 선언해 주시고 사용하시면 되겠습니다.


사용예시코드


위와같이 딕션어리객체를 만들어주고 

.ContainsKey() 매서드를 통해서 해당키가 

메모되어있는지 검사를해서 중복된 계산을 

피할 수 있습니다. 그리고 만약에 등록되지 않은

 키라면 계산하면됩니다. 재귀를 통해서 계산하기

 때문에 이미 했던 계산은 역시 피합니다. 


추가적인 꿀팁으로

비주얼스튜디오의 자동 줄맞춤

그러니까 코드를 자동으로 이쁘게 정렬해주는

단축키는 Ctrl+K+D 입니다.

사용결과코드


위와 같이 계산이 되는 모습을 알 수 있습니다. 

(속도가 메모객체를 사용하지 않은 것 보다 빠름) 

그리고 원래 피보나치는 for문으로 작성하는 것이

 더 효율적이라고합니다. 단지 예시로만 활용한

 것이니 이점 참고해주세요.

그리고 중복된계산을 피하는 용도가아니라 말 

그대로 사전(Dictionary)기능으로 키값(아이디값)을

 지정해주고 그 값을 통해서 Value를 구해오도록

 Dictionary객체를 사용해도 되겠습니다. 


이 밖에도 여러 응용방법이 많을 테니

 알고있으면 참 유용하겠네요.


다른 C sharp 프로그래밍도 참고하세요.


본 게시글은 한빛미디어의 윤인성님의 C#프로그래밍을 바탕으로 학습한내용입니다.

foreach 반목문 갖다뽀개버리기

속성 겟터와 셋터(get, set)키워드 알아보자

인스턴스변수와 클래스변수

readonly 키워드를 알아보자


댓글
댓글쓰기 폼
네이버 이웃추가
«   2019/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함