전체 글 532

[알고리즘] 동적프로그래밍 Part 1 - 이항 계수 문제 (Binomial Coefficient)

1. 문제 : 이항 계수(Binomial Coefficient) 문제를 해결하라. (for 0 0 정수이고, k는 0보다크거나 같고 n보다 작거나 같은 정수이다. if ( k == 0 || k == n ) return 1; else return bincoeff(n-1,k-1) + bincoeff(n-1,k); } - 분석 : 매우 비효율적이다. > Why? 문제가 2개의 더 작은 하위 문제들로 나뉘어지나, 하위 문제들이 원래의 문제 만큼 크다. 즉, 하위 문제가 상위 문제와 겹치는 경우가 발생한다. 균형취하기가 사용이 안됨(?) 4. 동적프로그래밍 해법 - 설계 아이디어 ⓐ 다음의 사실을 사용하라. A[n][k] -> A[n-1][k-1] + A[n-1][k] (단,n > 0 정수이고, k는 0보다크거나..

[알고리즘] Dynamic Programming - 동적프로그래밍

* 동적프로그래밍(Dynamic Programming)이란? // 분할정복알고리즘과의 비교 - 분할정복식 알고리즘 설계법은 하향식 해결법으로 나누어진 문제가 독립적인 문제를 해결하는데 적합하다. > 피보나치의 알고리즘을 분할정복식으로 구현하면, 알고리즘을 실행하면서 같은 계산을 한 번 이상하는 결과를 유발한다. 따라서 분할정복 알고리즘에 적용하기 부적합하다. - 동적 프로그래밍은 상향식 해결법으로 분할정복식과 같이 문제를 나눈 후에 나누어진 하위 문제들을 해결한다. > 문제를 해결할시 하위에서 풀은 값이 상위의 문제를 해결하는데 필요하면, 반복계산없이 하위 결과를 가져와 사용한다. * 동적프로그래밍 설계 전략 - 문제의 한 부분을 더 작은 하위 문제들의 부분으로 분할한다. - 작은 하위 문제들의 실례를 ..

[프로그래밍 언어론] Type-Checking

1. Type-Checking의 필요성 - 연산자에 제공되는 피연산자들이 호환이 가능한 Type인지를 판단하는 것이다. - 호환이 가능한 Type이란 무엇인가? > 원래 법칙상 모호성이 없는 것 / 즉, int타입들의 합이 int타입의 결과값에 들어간다는 것과 같은것 ex) int result; int i1 = 3; int i2 = 5; result = i1 + i2; // i1과 i2와 result가 모두 같은 타입으로 법칙상 모호성이 없다. > Coercion(묵시적 형변환)rule을 제공하는가? / 암암리에 컴파일러가 Type를 변환하는 것 ex) (In C) int_i = float_f1 + float_f2; // C언어의 경우 컴파일시 컴파일러가 경고만 해주고 자신이 알아서 타입변환을 한다. /..

[프로그래밍 언어론] Data Type part 5 - Pointer

* Pointer - 주소 값과 Null만 가지는 특수한 Type - 필요성 > 주소를 자유자제로 이동하기 > Dynamic 한 메모리 관리를 위해서 - 설계 이슈 ⓐ Scope ⓑ Heap-Dynamic Life time? ⓒ 포인터가 가르키는 타입에 맞춰서 Type을 명시하는가? 안하는가? ⓓ 동적 메모리할당과 주소를 가르키는 것 중 어떤 기능을 제공할 것인가?(둘다 제공도 가능) ⓔ 포인터 타입과 레퍼런스 타입을 모두 제공해주는가? * Pointer Operation int b = 3; int *ptr; ptr = &b; // '=' assignment가능 하다. printf("%d",*ptr); // Dereference 이 가능하다. * Pointer 사용에 따른 위험현상 ⓐ Dangling P..

[프로그래밍 언어론] Data Type part 4 - Union

* Union(ppt를 좀 많이보자... 설명의 한계) - 하나의 메모리에 두개 이상의 변수로 사용 하는 것 - 메모리 절약과 공통으로 공유할 정보를 효율적으로 공유할 목적으로 만듬. ex) 1024 주소를 a,b,c,d 변수가 동시에 가르키고 있다면, a = 24;를 하면 b = c = d = 24;도 같이 실행됨 - 설계 이슈 ⓐ Type checking을 해줄 것인가? > 타입 체킹을 해주면 신뢰성이 높아진다. > 타입 체킹을 하지 않을 시 생기는 문제점 > 만약, 어떤 주소를 int형 a와 float형 b와 char형 c변수가 동시에 가르키고 있을때, b = 1.5를 해주면 a = 1로 저장이 되면서 0.5의 데이터 손실이 생기면서 신뢰성이 크게 떨어진다. ex) (In FORTRAN) EQUIV..

[프로그래밍 언어론] Data Type part 3 - Array & Record Type

1. Array Type - 성격이 같은 여러 원소를 묶어 놓은 것 - Position(Index 값)에 의해서 접근이 가능하다. - Array_name[subscript] - 설계 이슈 ⓐ subscript의 Type는 어떤것을 지원해 줄 것인가? ex) FORTRAN, C, Java : int only Pascal : 몇몇의 순서 타입 Ada : Integer or enum ⓑ subscript의 길이를 검사할 것인가? > 이것은 배열에 원소를 넣을시 배열의 범위를 벗어나는 곳에 대한 참조에 대한 error를 잡는 행위 > subscript의 길이 검사를 구현하면, 신뢰성을 높일수 있는 장점이 있지만, 컴파일러가 복잡해지고, 효율성이 떨어지는 단점이 있다. ⓒ 언제 subscripts의 값이 결정되고..

[프로그래밍 언어론] Data Type part 2 - Ordinal Type : 순서 타입

* Ordinal Type : 특정 타입이 취할 수 있는 값이 주어진 것. 즉 사용자가 지정해준 변수 값 많을 취한 수 있다. 1. Enumeration Types (열거 방식) - 타입이 취할 수 있는 값을 일일이 열거 해주는 방식 ex) (in C) enum colors { red, blue, green, yellow } // 각각의 요소는 숫자 인덱스로 지정되있다. // red = 1 , blue = 2 , green = 3 , yellow = 4 colors mycolor = red; // mycolor은 red, blue green, yellow만 취할 수 있다. mycolor++; // 각각의 요소에 숫자가 부여 되있으므로 ++시 다음요소 값 이동 // 즉 mycolor값은 blue가 된다. ..

[잡념] ... 으아 힘들다!!

시험 기간이 찾아왔습니다. 오늘 1차 보스를 15%정도의 체력 손해를 보면서 쓰러뜨렸습니다. 대부분 배운 것이 이 제 지식소인 블러그에 있어서 뽑아서 다시 보는데... 군대군대 오타도 보이고... 그 때 당시 이해 안되어서 이상하게 적거나, 그 때당시 잘못 이해했던 내용들이 눈에 보이더군요.. ㅠㅅㅠ 역시 상위 것을 배워나가면 아랫것의 잘못된 개념이 다시 정립되는건가 봅니다... 시험기간에도 수업은 수업대로 Fast하게 No-break로 진행되니... 시험이 끝나도 문제입니다. 지금은 시험 공부에 여념하느냐고 블러그에 내용도 기입하지 않고 있으니... 그 방대한 양이란... 흙... 또한, 이번에 느낀건데 블러그의 정보가 더욱 커지기전에 이전에 글들에서 잘못된 것을 찾아보면서 수정해야 될 필요성을 느꼇습..

Cloud Travel 2011.10.19

[PHP] PHP Session/Cookie

1. HTTP Cookie - Connection/State가 없으면 보안의 문제가 발생할 수도 있음 (Connection/State가 없어서 여러 사람을 동시에 수용이 가능하다) - Cookie 작동원리 > 사용자가 특정 html문서를 요청하면 서버에서 브라우저에 cookie를 세팅해서 돌려보냄. ( Set-Cookie: name=value) > 그다음부터 html문서는 cookie를 해더에 달고선 서버에 접속을 하여, cookie값에 따라 다른 값을 보여줌. 2. Cookie in PHP - html요소들 보다 먼저 나와야한다. - Set:setcookie(name,value,expire,path,domain)을 주워서 세팅을하며, > name=value라고 서버(domain/path)에 알려주며, ..

[PHP] PHP 기초

1. PHP - C/Perl의 장점을 이어받은 객체 지향 언어 - 웹 개발을 위해 만들어진 스크립트 언어 - 장점 > 범용성을 지닌 오픈소스 프로젝트 > 다양한 플랫폼/DBMS 지원 > 설치, 개발, 운용이 쉬움 > 저렴한 가격, 고성능, 대규모 프로젝트도 가능!! - 작동원리 > php파일을 사용자가 웹서버로 전송하면, php모듈에 의해 HTML파일로 해석 (PHP모듈에서 필요시 DBMS로의 데이터 수신및 발신) > 해석된 html파일을 웹서버를통해 사용자에게 전달 / 랜더링 후 출력 - PHP와 조합되는 가장 많은 형태(Cost Free) > Linux + Apache + MySQL + PHP / LAMP 2. PHP 기초적 문법 - PHP 생성 블럭 : - 블럭 내에서의 주석 : //, /* */(..