본문 바로가기

Programming147

재귀함수 - 하노이 타워 하노이 타워 문제란 A, B, C의 기둥이 있을 때 A의 모든 원반을 C로 옮기는 문제이다.단, 원반은 한번에 하나씩 옮길 수 있고 작은 원반 위에 큰 원반이 올려져서는 안된다. 이걸 어떻게 재귀적으로 구현하냐면.. 규칙을 찾아보자. 원반은 1, 2, 3, 4로 크기를 구분하도록 하자 만약 원반이 3개가 있다고 가정했을 때 A의 세개의 원반을 C로 옮기기 위해선 원반 3을 C로 옮겨야 함. 그리고 이를 위해선 원반 1과 2를 먼저 원반 B로 옮겨야 한다. 만약 원반이 4개가 있다고 가정하면A의 네개의 원반을 C로 옮기기 위해선 원반 4를 C로 옮겨야 함. 그리고 이를 위해선 원반 1과 2와 3을 먼저 원반 B로 옮겨야 한다. 그렇다면 규칙이 원반 N개를 A에서 C로 옮길 때1. 작은 원반 N-1개를 A에.. 2018. 4. 16.
재귀함수 - 피보나치 재귀 함수라는 것은 recursive(반복적인) 함수이다. 나는 과거 누군가에게 재귀함수를 설명하기 위해 다음과 같은 비유를 했다. TV를 보고 있는데 TV안에 TV가 있었다. 그런데 그 TV안에 TV안에 TV를 보았다. 그런데 그 TV안에 TV안에 TV안에 TV를 보았고...그렇다면 만약 모든 TV를 꺼야한다면 어느 것부터 꺼야할까? 가장 바깥쪽에 있는 TV부터 꺼나가야 할까? 안쪽에 있는 TV부터 꺼나가야 할까?이런식으로 이해를 시켰었다. 당연히 안쪽에서부터 꺼야지 차례차례 꺼나갈 수 있지~라고 하면서.. 재귀적으로 피보나치를 구하는 코드이다. #include int Fibo(int n){if(n==1)return 0;else if(n==2)return 1;elsereturn Fibo(n-1)+Fib.. 2018. 4. 16.
DNS 캐시 지우기 ipconfig /flushdns /displaydns 윈도우에서는 DNS를 통해 확인된 주소를 캐싱을 통해 속도를 높인다.하지만 작업을 하다보면 호스트를 찾을 수 없다는 에러를 간혹 볼 수 있다. (왜 주기적으로 뜨는건지는 잘 모르겠다..;;) 아무튼 DNS를 CLEAR하는 방법은 CMD 명령 프롬프트를 관리자 권한으로 열고 ipconfig /flushdns를 날리면 된다.그럼 dns 캐시가 지워지는데 인터넷이 연결되어 있는 상황에서는 바로 무언가가 또 캐시가 되기 마련이다.그래서 우리는 테스트를 위해서 dns 캐시가 어떻게 되어있는지 확인하는 창을 1개 띄워놓고 다른 창에서 캐시를 clear 하는 명령어를 날리면서 확인하면 된다. 즉 우리는 날리기 전에 현재 캐싱된 dns를 보려면 다음 명령어를 날리면 된다.ipconfig /displaydns 이 명렁어.. 2018. 4. 16.
MSSQL TABLE REBUILD 데이터가 빈번히 삽입 삭제 수정 등이 발생하여 인덱스가 깨지거나 조각화가 일어날 경우 성능저하를 유발할 수 있다. mssql은 클러스터형 테이블과 heap 테이블로 구성되는데 클러스터형 테이블은 클러스터형 인덱스 기준으로 데이터가 순서대로 저장된다.사실은 클러스터형 인덱스도 테이블이라고 보면 쉽다. heap 테이블의 경우에는 클러스터형 인덱스가 없을 때 순서가 없이 그냥 저장되는 구조이다.이때 테이블 리빌드는 조각화가 발생했을 때 중간중간 비어있는 공간을 인지함으로써 재정렬을 통해 테이블을 새것으로 만드는 작업이라고 할 수 있다.인덱스 리빌드는 추후에 다시 포스팅할 예정이다. 간단하지만 다음 쿼리를 통해 테이블을 리빌드 해주자. select 'ALTER TABLE ' + object_name(a.obje.. 2018. 4. 16.