본문 바로가기
반응형

프로그래밍314

css 기초 정리 ● html, xml 등은 문서의 구조를 정의한다. css 는 문서의 표현을 정의한다. ●html에서 구조를 나타내기 위해 사용하는 요소들 div, span, ul, ol, dl, h1~h6, p, table 등이 있다. ●css는 html의 각 구조를 시각적 표현으로 꾸며준다. ●css의 기본 규칙 - 선택자 {속성: 값; } ex) body {background-color: gray; } ●css의 선택자 - 스타일을 적용할 대상으로, body, p, h1 등 html의 요소명이나 id명,class명을 사용할 수 있다. ●css의 속성 - 해당 선택자의 어떤 스타일을 부여할지 결정한다. ●class 선택자와 id 선택자 - 특정 요소를 대상으로 스타일을 적용하기 위해 사용한다. - id선택자는 사용할.. 2012. 5. 20.
모바일 웹 프로그래밍 - 주소창 보이지 않게 하기 ●화면을 밑으로 스크롤하면 주소창이 보이지 않게 하는 스크립트를 2012. 5. 15.
모바일 웹 개념 ●모바일 어플리케이션의 종류 네이티브 앱(Native App) - 모바일 기기에 직접 설치되고 사용되어지는 어플리케이션이다. 모바일 웹(Mobile Web) - 모바일 웹브라우저에 의해 실행되는 웹 사이트로 일반적인 웹사이트를 모바일로 옮긴 형태를 말한다. 하이브리드 앱(Hybrid App) - 웹과 네이티브 앱의 중간 형태이다 모바일 웹앱(Mobile Web App) - 모바일 웹의 한 형태이지만 일반적인 웹보다 모바일에 더 최적화되고 네이티브 어플리케이션화된 형태를 표현한다. ●모바일 웹은 기존의 웹사이트를 바탕으로 레이아웃만 모바일 환경에 맞게 바꾸는 것이기 때문에 기존 일반 웹기술을 바탕으로 구현된다. 그래서 모바일 웹을 공부하기전 일단 기존 웹기술(jsp, sql, 웹서버 등)을 먼저 배워야 한.. 2012. 5. 6.
알고리즘 동적계획법(dynamic programming) ●동적계획법(dynamic programming) - 작은 문제들의 해를 먼저 구하여 저장하고 더 큰 문제의 해를 구할 때 작은 문제의 해를 반복계산하지 않고 저장도니 ㄱ려과를 사용하는 방법이다. 동적계획법을 하기 위해선 주어진 문제의 해를 구하기 위한 순환적인 성질을 구성하여야 한다. 상향식으로 작은 부분부터 해를 구한다. ●장점 - 프로그램을 구현할 때에는 필요한 모든 가능성을 고려해서 구현하게 된다. 따라서 동적 계획법을 이용하여 항상 최적의 결과를 얻을 수 있다. ●단점 - 모든 가능성에 대한 고려가 불충분할 경우 최적의 결과를 보장할 수 없다. 동적 계획법을 구현하기 위해서는 충분히 많은 가능성에 대한 고려를 해야 한다. 다른 기법에 비해 메모리를 많이 요구한다. ●점화식 세우는 법 ①해를 구하.. 2012. 4. 14.
알고리즘 큐(queue) ●큐 - 저 들어간 데이터가 먼저 나오는 구조이다(FIFO). 큐는 데이터를 담는 큐배열, 데이터를 집어넣는 곳을 알려주는 포인터 변수(Tail)와 데이터를 꺼내는 곳을 알려주는 포인터 변수(Head), 입력(Enqueue)과 출력(Dequeue)을 당담하는 함수 이루어 진다. 큐를 자동으로 구현해 주는 프로그램 기법은 없다. ●Enqueue함수 void Enqueue(int data) { queue[++tail]=data; } ●Dequeue함수 int Dequeue(){ int daga; data=queue[++head]; return data; } 2012. 4. 14.
알고리즘 스택(Stack) ●스택(Stack) - 나중에 들어간 데이터가 먼저 나오는 구조이다(LIFO). - 스택은 데이터를 담는 스택 배열과 데이터를 담을 위치를 알려주는 스택포인터 변수와 입력(push)과 출력(pop)함수로 구현된다. ●push함수 void push(int data) { stack[sp]=data; sp++; } ●pop함수 int pop() { int data; sp--; data=stack[sp]; return data; } ●재귀호출은 스택을 자동으로 구현해줌으로써, 백트래킹 프로그램을 구현하는데 매우 편리하다. 2012. 4. 14.
알고리즘 분기한정(Branch and Bound) ●분기한정(Branch and Bound) - 백트래킹과는 달리, 분기와 한정을 정해서 해를 구하는 기법이다. 백트래킹을 구현할 때 경우의 수가 너무 많아 모든 경우를 다 해보기 어려울 때, 사용하면 좋다. 가지치기하는 기준이 되는 값이 바운드 값이다. 너비우선탐색을 사용한다. ●너비우선탐색(BFS, Breadth First Search) - 반복문과 큐를 이용하여 구현한다. 경로가 길 경우에는 탐색 가지가 급격히 증가함에 따라 보다 많은 기억 공간을 필요로 하게 된다. DFS 보다 많은 자료를 처리할 경우에 적합한다. ●큐(queue) - 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조이다. ●BFS기법 - 시작점과 연결된 모든 정점을 방문한다. - 시작점과 연결된.. 2012. 4. 9.
알고리즘 백트래킹(Backtracking) ●백트래킹 - DFS(깊이우선탐색)방식으로 해를 찾는 방법이다. DFS는 해를 찾기 위해 전진, 후진을 반복한다. 백트래킹 재귀 호출을 해서 구현하면 편리하다. ●깊이우선탐색(DFS, Depth First Search) - 답을 찾을 때 가장 위에서 가장 아래쪽으로 들어 갔다가, 제일 밑에 까지 왔을 때 더 들어갈 곳이 없으면 위로 나왔다가 다시 가장 끝까지 들어가는 동작을 되풀이 한다. 여기서 위로 나오는 동작을 백트래킹이라고 한다 ●스택(stack) - 나중에 입력된 데이터가 먼저 빠져 나오는 구조이다. 후입선출(LIFO) ●사용하는 재귀함수의 수는 수학의 "경우의 수"와 같다. 예를들어 동전,주사위 등의 문제를 코딩할 때 각각의 무제의 경우의 수만큼의 재귀호출을 사용한다. ●백트래킹 알고리즘으로 해.. 2012. 4. 8.
알고리즘 정렬(sort) - 퀵정렬(Quick sort) ●퀵정렬(Quick sort) - 어느 한 값을 기준으로 이 값보다 작은값을 갖는 데이터와 큰 값을 갖은 데이터를 분리하여 2개의 그룹으로 나눈다. 그리고나서 각 그룹에 대해 위 작업을 재귀적으로 반복해서 정렬한다. 다른 정렬보다 평균적인 실행시간이 빠르다. ●퀵정렬 코드( 제대로 정렬이 안됨, 나중에 수정) #include #include int i, n = 10, data[10] = {3, 7, 8, 2, 9, 1, 4, 7, 6, 5}; void quick(int array[], int left, int right) { int choice; int i, j, temp; if(left=j) //교환할 데이터가 없으면 break break; temp=array[i]; array[i]=array[j]; .. 2012. 4. 1.
알고리즘 정렬(sort) - 선택정렬(Selection sort) ●선택정렬(Selection sort) - 데이터에서 가장 큰 값을 찾아서 마지막 위치에 있는 데이터와 교환하고, 그 다음 두번째로 큰 값을 갖은 데이터를 찾아서 마지막 전 위치에 있는 데이터와 교환한다. 이런식으로 모든 데이터를 정렬한다. ●선택정렬 코드 #include int i, n=10, data[10] = {32, 1, 15, 2, 7, 3, 9, 7, 92, 12}; void select(int array[], int n) { int i, j, temp; for(i=0; i 2012. 4. 1.
알고리즘 정렬(sort) - 삽입정렬(Insert sort) ●삽입정렬(Insert sort) - 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 배열이 길수록 효율은 떨어진다. 출처 - 위키백과 ●삽입정렬 코드 #include int i, n=10, data[10] = {30,5, 32,11, 98, 34, 12, 54, 32, 543}; void insert(int array[], int n) { int temp, k; temp = k = 0; for(i=1; i=0 && array[k]>temp) { array[k+1] = array[k]; k--; array[k+1] = temp; } } } void output() { for(i=0; i 2012. 4. 1.
알고리즘 정렬(sort) - 버블정렬(Bubble sort) ●버블정렬(Bubble sort) - 인접한 두개의 데이터의 값을 비교해서 정렬되어 있지 않으면 교환하는 정렬이다. 이런방법으로 마지막까지 비교하고 교환하면 한 단계가 끝난다. 그리고나서 2번째 데이터부터 다시 두개의 데이터의 값을 비교해 나가면서 비교한다. 다른 정렬에 비해 정렬 속도는 느리지만 코드는 단순하다. ●버블정렬 코드 #include int i; int n=10; //n은 데이터 개수 int data[10]={30,40,20,10,43,12,54,87,34,1}; void bubble(int array[], int n) { int i, j, temp; for(i=0;i 2012. 4. 1.
알고리즘 정렬(sort) ●정렬(sort) - 임의의 순서대로 배치되어 있는 집합을 어떤 기준에 맞춰 순서대로 재배치하는 것이다. 정렬의 방법에는 크게 내부정렬와 외부정렬로 나눌수 있다. ●내부정렬(internal sort) - 내부정렬(internal sort)은 정렬을 할 데이터가 메모리 안에서 정렬이 이루어 질때 사용한다. 내부정렬에는 버블정렬,선택정렬,퀵정렬,2-way합볍정렬,힙정렬,리스트정렬 등이 있다. ●외부정렬(external sort) - 외부정렬(external sort)은 데이터의 크기가 매우 클때 외부의 디스크같은 보조 기억 장치를 사용하여 정렬하는 방법이다. 외부정렬에는 자연합병,균형2-way합볍,다단계합병 등이 있다. 2012. 3. 30.
알고리즘 그리디(greedy) 알고리즘 ●그리디(greedy) 알고리즘 - 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적(전역적)인 해답을 만들었다고 해서, 그것이 최적이라는 보장은 없다. 출처 - 위키백과 ●쉽게 설명하면 모든 경우의 수를 구하는게 아니라 하나를 선택하고, 그 선택한 순간에 최적이라고 생각하는 것을 하나 선택하면서 최적해를 구하는 알고리즘이다. 그렇기 때문에 전체적으로 최적이 아닌 경우가 나올수도 있다. 그래서 그리디 알고리즘을 구현할 때는 전체적인 최적이 될것인지를 염두해 두고 알고리즘을 구현해야 한다. ●Dijkstra(다익스트라)의 최단.. 2012. 3. 29.
c언어 파일 입출력 ●파일 열기 ex) FILE * fp; fp = fopen("파일이름", "형식"); ●파일 닫기 ex) fclose(fp); ●입력할 파일은 실행하는 코드와 같은 폴더에 위치해야 한다. 보통 비주얼스튜디오에서 New 파일추가에서 텍스트 문서를 추가하면 된다. ●출력된 파일을 확인하려면 비주얼스튜디오 좌측 파일목록에서 우클릭->Add File to Project선택후 파일이름에 *를 입력하고 ok버튼을 누른다. 그 다음 출력된 파일을 선택하면 된다. ●문제 - 파일에서 숫자 2개를 입력받아서 첫번째 숫자에서 두번째 숫자까지의 구구단을 구해서 파일로 출력하는 프로그램을 만들어라. #include void main(){ FILE *in = fopen("input.txt", "r"); FILE *out = f.. 2012. 3. 28.
알고리즘 피보나치 수열 ●피보나치 수열 개념 - 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일때, 이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다. [출처] 피보나치수열 [Fibonacci sequence ] | 네이버 백과사전 ●피보나치 수열은 재귀호출(Recursive Call)을 사용해서 구하면 편리하다. ●문제 - 첫항과 둘째항이 1, 1인 경우에, 20번째 피보나치 수열의 값을 구하여라. #include int fino(int n) { if(n==1 || n==2){ return 1; } else{ return fibo(n-1) + fibo(b-2); } } void main(){ int a; scanf("%d", &a); printf("%d", fibo(a)); } 2012. 3. 26.
java script 문법 정리 3 ●window 오브젝트의 주요 프로퍼티와 메서드. 자기 자신의 창에 대해서는 'window.프로퍼티명'이나 window.매서드명'의 'window.'부분을 생략할 수 있다. ex) 프로퍼티 기능 document Document 오브젝트를 참조한다. history History 오브젝트를 참조한다. location Location 오브젝트를 참조한다. frames Frame 오브젝트의 연상 배열을 참조한다. closed 창이 닫혀있는지를 참조한다. opener 자기 자신을 오픈한 창을 참조한다. innerWidth 창 안쪽의 너비를 참조 설정한다. innerHeight 창 안쪽의 높이를 참조 설정한다. outerWidth 창 바깥쪽의 너비를 참조 설정한다. outerHeight 창 바깥쪽의 높이를 참조 .. 2012. 3. 22.
java script 문법 정리 2 ●문자열과 수치를 연결하면 수치가 문자열로 변환된다. ex) a="ab"; b=5; c=a+b; ●수치와 논리값을 연결하면 논리값이 수치로 변환된다. true는 1, flase는 0 ex) a=5; b=true; c=a+b; //c는 6 ●문자열+논리형 은 논리형이 문자열(true,false)로 변환된다. ●형 변환하기 - parseInt() - 문자열을 정수로 변환 ex) a = "123"; num = parseInt(a); - parseFloat() - 문자열을 소수로 변환 ex) a = "11.11"; num = parseFloat(a); - toString() - 여러가지형을 문자열로 변환한다. ex) a = 222; b=true; str = a.toString(); bool = b.toStrin.. 2012. 3. 21.
java script 문법 정리 1  ●자바스크립트는 인터프리터형 언어이다. 클라이언트측 스크립트이다. ●클라이언트 스크립트는 마우스나 키오드의 조작에 의해 표시 내용이 바귀는 웹페이지에 많이 이용한다. 웹브라우저에서 실행되기 때문에 기볹거으로 통신이 발생하지 않기 때문에 서버측에 부하를 주지 않는다. ●클라이언트 스크립트는 서버에 데이터를 보존하거나 다른 사용자와 데이터를 공유할 수 없다. ●주석 - ' /* ~~~ */ ' , ' //~~ ' 를 쓴다. ●웹디자인할때 태그보다는 css를 쓰는게 좋다. ●문자열 표시 - window.documnet.write() 사용한다. ex) ●window는 생략가능하다. ●'' 쓰는 이유 - 자바 스크립트를 처리하는 브라우저에서는 '//-->'이게 적용되서 주석 기호 무시하고 처리를 한다. 자바스.. 2012. 3. 21.
mySQL 페이징 쿼리문 ●limit 문 limit 0, 10 //1번째에서 10개 limit 10, 10 //11번째에서 10개 limit 20, 10 //21번째에서 10개 ●페이징 쿼리문 select * from freeboard order by idx desc limit 0,10 보통 " limit 0, 10 " 부분에서 0부분에 임의의 변수 offset을 넣어 사용한다. offset은 0,10,20...으로 증가한다. 2012. 3. 18.
jsp 기본 문법 정리4  ●${} - EL, 익스프레션랭귀지, 표현언어 ●EL식에 포함된 데이터이름은 기본적으로 어트리뷰트이름으로 해석한다. ex) request.setAttribute("R", ~~); 2012. 3. 12.
jsp 기본 문법 정리3  ●DB연동 - 자바와 DBMS를 이어주는 JDBC 드라이버를 WEB-INF밑 lib에 넣어준다. ex) Class.forName("con.mysql.jsbc.Driver"); //JDBC드라이버 로드."con.mysql~~"은 JDBC드라이버의 클래스 이름이다. Connection conn = DriverManager.getConnection("jdbc:mysql://111.111.111.111:3306/db이름", "ID", "password"); conn.close(); //DB연결 끊기 ●DB데이터 읽기 ex) Statement stmt = conn.createStatement(); //conn은 getConnection메서드가 리턴한 Connection의 객체이다. ResultSet rs = .. 2012. 3. 12.
jsp 기본 문법 정리2 ●쿠키 - 전달할 데이터를 웹브라우저에 저장했다가 웹서버 쪽으로 되돌려 받는 방법 ●세션 - 전달할 데이터를 브라우저가 아닌 웹서버에 저장해 놓고 데이터를 전달하는 방법 ●쿠키 입력 - Cookie 클래스의 객체를 만들고 addCookie 메서드를 호출한다. ex) Cookie cookie = new Cookie("A", "1"); // A는 임의의 쿠키 이름이고 1은 임의의 쿠키에 저장한 값이다 //둘다 string타입이다. response.addCookie(cookie); ●쿠키는 html 문서 앞에 쓰는게 좋다. ●쿠키 조회 - 웹브라우저가 웹서버로 url을 보낼때마다 그 url에 포함된 웹서버의 주소에 해당하는 모든 쿠키를 찾아서 웹서버로 보낸다. 쿠키를 받는 일은 getCookies메서드를 이용.. 2012. 3. 11.
jsp 기본 문법 정리1 ●JSP는 HTML문서 사이에 JSP문법코드가 삽입된 형태로 작성된다. ● - 스크립트릿, 이 안에 자바 코드 쓸수 있다. ● - 익스프레션, 자바식 출력 ● - 지시자, 웹컨테이너가 jsp 페이지를 처리할 때 필요한 정보를 기술 ● - 선언부, 변수선언이나 메서드를 선언 ●&{ } - 익스프레션 언어(EL) ●, - 액션 태그 ●서블릿 - 장점 : 복잡한 프로그램 구현에 적합하다. 컴파일 결과만 설치해도 되므로 소스코드 유출 보호 - 단점 : HTML 문서의 디자인이 바뀔때 마다 서블릿 클랫를 수정/컴파일/설치 해야하고 웹서버를 재기동하는 일을 되풀이 해야한다. 설치과정이 복잡하다. ●JSP - 장점 : HTML중심의 코드구조이므로 디자인 작업에 바로 사용가능하다. 그리고 그 일이 끝나면 바로 프로그램.. 2012. 3. 11.
JSP 프로젝트 시작하기 & DB 연결하기 ●DB연결하기 ①이클립스 하단 Data Source Explorer에서 Database Connetions를 오른쪽 버튼클릭하고 new를 누른다 ②연결할 DB를 선택한다. ③아래 그림에서 빨간색 네모안에 있는 버튼을 클릭한다. ④Name/Type에서 DB 버전을 선택한다. ⑤JAR List 에서 목록을 선택 후 먼저 'Remove Jar/Zip'버튼을 눌러 없엔다. 그리고 'Add JAR/Zip'버튼을 눌러 해당 버전에 맞는 jar를 추가해 준다. ⑥Properties에서 각 Value값을 설정해준다. 설정하고 ok버튼을 누른다. ⑦Test Connection을 누르면 제대로 연결이 되었는지 안되었는지 확인할수 있다. 제대로 연결이 되었으면 finish버튼을 누른다. ●프로젝트 시작하기 ①Project .. 2012. 3. 10.
JSP 이클립스 개발 환경 구축(세팅) 1. JDK 설치하기 2. 환경변수 설정하기 3. 톰캣 설치하기 4. 이클립스 설치하기 5. 톰캣과 이클립스 연동 ------------------------------------------------------------------------------------------------ 1. JDK 설치하기 ① http://java.sun.com 에 들어간다 ② 상단 Download에서 java se, jdk를 다운 받아 설치한다. 2. 환경변수 설정하기 ①내 컴퓨터 -> 시스템 속성 -> 고급 -> 환경변수 ②변수이름 Path에다가 jdk설치경로에 있는 bin디렉토리 경로명을 제일 앞에 추가 하고 ' ;(세미콜론) '을 붙여준다. ③잘 되었는지 확인하려면 cmd 창에서 'javac -version' .. 2012. 3. 10.
c# 기본 문법 정리5 ●using 지시어 - 뒤에 지정한 네임스페이스를 이용한다는 것을 선언 ex) using System; ●Console클래스는 System 네임스페이스에 속한다. ●스트림 - 파일의 읽기 및 쓰기에 대한 데이터의 흐름을 스트림이라 한다. C#에서는 스트림 전용 클래스에서 생성한 객체를 사용한다. 스트림 클래스를 이용하려면 'using System.IO;'를 선언해야 한다. ●예외처리 ex) try{ 예외가 발생할지도 모르는 처리 } catch(예외클래스명 변수명){ 예외 발생시 실행하는 처리 } finally{ 뒷 마무리 작업 } ●문자 읽기 ①파일 열기 - FileStream클래스를 사용하여 스트림을 만들고 StreamReader라는 읽기용 클래스에 전달 ex) FileStream fs = newStr.. 2012. 3. 8.
c# 기본 문법 정리4 ●추상클래스 - 추상메서드를 가진 클래스이다. ●추상메서드 - 처리를 명시하지 않고 호출한 쪽만 정의한 메서드 ex) abstract class A{ public abstract void Add(); // '{}'안쓰고 ';'으로 끝난다. } ●추상클래스를 상속하여 객체를 생성하려면 다음과 같이 override붙인 멤버를 준비한다. ex) abstract class A{ public abstract void add(); } class B : A{ public override void add(){ ~~ } } ●인터페이스 - 추상메서드, 추상속성, 추상인덱서, 이벤트만 멤버로 가질 수 있다. ex) interface A{ public abstract void a(); public abstract int b.. 2012. 3. 8.
c# 기본 문법 정리3 ●속성 - 객체 안에 있는 필드의 값을 취득 또는 설정하는 메서드이다. 필드를 반환하는 get엑세서와 필드에 값을 대입하는 set엑세서로 구성된다. 자바에서 setter, getter랑 비슷한 개념이다 ex) usting System; class A{ public int a; public int sok{ get{ return a; } set{ a=value; } } } A a=new A(); a.sok = 3; //따로 set, get을 표시하지 않고 그냥 입력 or 출력하면 된다. Console.Write(a.sok); ●인덱서(indexer) - 객체를 배열처럼 취급하고자 할 때 사용한다. 속성과 같이 get, set으로 구성 ex) using System; class A{ int []a = new .. 2012. 3. 7.
c# 기본 문법 정리2 ●if문 if (조건) { 내용 } else if(조건){ 내용 } else{ 내용 } ●for문 int i; for(i=0; i 2012. 3. 7.
반응형