분류 전체보기 211

[알고리즘/정렬 알고리즘] 퀵 정렬(Quick sort) Java, Python

퀵 정렬(Quick sort) 알고리즘의 개념 퀵 정렬(Quick sort)은 일반적으로 사용되고 있는 아주 빠른 정렬 알고리즘 '찰스 앤터니 리처드 호어(C. A. R. Hoare)가 개발한 정렬 알고리즘 불안정 정렬에 속하며, 원소들과의 비교만으로 정렬을 수행 분할 정복 알고리즘 중 하나 퀵 정렬(Quick sort) 알고리즘 세부 과정 먼저 하나의 요소를 선택한다. 이렇게 고른 요소를 피벗(pivot)이라고 한다. 피벗을 기준으로 피벗보다 작은 값을 피벗기준 왼쪽으로, 큰 값을 피벗기준 오른쪽으로 정렬한다. 피벗을 제외한 왼쪽 값들과 오른쪽 값들을 다시 정렬한다. 위처럼 나눈 값들의 길이가 1이 될 때까지 반복한다. 퀵 정렬(Quick sort) 알고리즘 예제 배열의 요소가 5, 7, 1, 4, 6..

2020 통합 1,2회 정보처리기사 필기 합격 후기

//글을 적는 법을 연습할 겸 이번에 정보처리기사 필기 합격 후기를 적어보려고 한다. 합격률이 50%가 넘고 IT직종에 일하거나 전공자이면 웬만해서는 쉽게 딴다는 정보처리기사인데.. 그중에 필기만 합격해놓고 이렇게 후기를 올리는 것은 그렇게 마음이 편하진 않지만 이런 기록 하나하나가 나중에 봤을 때는 순간의 보람이라도 얻게 해주지 않을까라는 생각에 후기를 써본다. 이번 코로나 사태가 생기면서 원래 올해 초에 있던 시험은 6월까지 밀리게 되었고 1,2회가 통합되어 시행되었다. 덕분에 공부 패턴은 많이 꼬이긴 했지만 시간적으로는 여유롭게 공부했던 것 같다. 물론 모든 시간을 정처기 공부에 할애하진 않았지만 책 1회 정독은 한 것 같다. 내가 사용했던 책은 수제비라는 책이었다. 1편과 2편이 나뉘어 있는데 총..

일상 생활 2020.06.28

[알고리즘/정렬 알고리즘] 셸 정렬 (Shell sort) Java, Python

셸 정렬(Shell sort) 알고리즘의 개념 셸 정렬(Shell sort)은 삽입 정렬의 장점은 살리고 단점은 보안하여 좀 더 빠르게 정렬하는 알고리즘으로 D. L. Shell이 고안했다. 먼저 정렬할 배열의 요소를 그룹으로 나눠 각 그룹 별로 삽입 정렬을 수행하고, 그 그룹을 합치면서 정렬을 반복하여 요소의 이동 횟수를 줄이는 방법이다. 셸 정렬(Shell sort) 알고리즘 세부 과정 정렬할 배열을 일정한 기준(간격)에 따라 분류 각 부분 배열을 삽입 정렬로 정렬 다시 전체 배열을 더 적은 개수의 부분 배열로 분류 위의 과정(2,3)을 부분 배열의 길이가 1이 될 때까지 반복 셸 정렬(Shell sort) 알고리즘 예제 배열의 요소가 8, 1, 4, 2, 7, 6, 3, 5 순으로 저장돼있고 오름차..

[Oracle DataBase] 숙박업소 예약시스템 구축

목차 1. 프로젝트 개요 2. 프로젝트 일정 3. 프로젝트 산출물 3-1. 주제 소개 및 선정 배경 3-2. 업무 관계자 인터뷰 및 needs 파악 3-3. ER 다이어그램 작성 및 IE 표기 3-4. 정규화 수행 3-5. Table, Index 작성 및 Data입력 3-6. Data 수정 및 삭제 테스트 3-7. SQL문을 통한 Data 검색 3-8. View 생성 3-9. 데이터 회복 1. 프로젝트 개요 1.1 프로젝트 명 및 기간 -> 프로젝트 명 : Accommodation Reservation System -> 프로젝트 기간 : 2019.04.16 ~ 2019.04.21 1.2 프로젝트 목표 - 고객과 업주를 효율적으로 관리할 수 있는 숙박업소의 예약시스템(DB) 구축 1.3 프로젝트 범위 2...

프로젝트 2020.06.27

[알고리즘/정렬 알고리즘] 삽입 정렬 (Insertion sort) Java, Python

삽입 정렬(Insertion sort) 알고리즘의 개념 (오름 차순 기준) 선택한 요소를 그보다 더 앞쪽의 알맞은 위치에 삽입하는 작업을 반복하여 정렬하는 알고리즘이다. 선택 정렬과 비슷하게 보이지만 삽입 정렬은 해당 값을 가져와 알맞은 위치에 옮긴다는 점이 다르다. 삽입 정렬(Insertion sort) 예제 배열에 6, 4, 1, 7, 3 순으로 값이 들어가 있고 오름차순으로 정렬할 때의 삽입 정렬 예를 확인해보자 위와 같이 정렬을 하지 않은 부분의 첫 번째 요소를 가져와 정렬을 마친 부분의 적절한 위치를 찾아 옮기는 알고리즘이 삽입 알고리즘이다. [Java 코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class Insert..

[알고리즘/정렬 알고리즘] 선택 정렬 (Selection sort) Java, Python

선택 정렬(Selection sort) 알고리즘의 개념 (오름 차순일 경우)가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘이다. 제자리 정렬(in-place sorting) 알고리즘의 하나 정렬을 마친 부분과 아직 정렬하지 않은 부분이 나뉘어 있으며, 아직 정렬되지 않는 부분에서 최솟값을 찾아 정렬의 마친 부분의 끝 부분에 값을 넣어준다. 선택 정렬(Selection sort) 예제 배열에 3, 2, 6, 4, 1 순으로 값이 들어가 있고 오름차순으로 정렬할 대의 선택 정렬 예를 확인해보자 위의 과정과 같이 배열 중 최솟값을 찾아 회색 부분(정렬하지 않은 부분의 첫 번째 요소)과 살구색 부분(정렬하지 않은 부분의 최솟값)을 교환해주고 만약 둘이 같은 값을 가진다면 다음 단계로 ..

[알고리즘/정렬 알고리즘] 버블 정렬 (Bubble sort) Java, Python

버블 정렬(Bubble sort) 알고리즘의 개념 버블 정렬은 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복하는 알고리즘이다. 선택 정렬과 기본 개념이 비슷하다. 버블 정렬(Bubble sort) 예제 배열에 1, 5, 4, 10, 8, 19, 3 순으로 값이 들어가 있고 오름차순으로 정렬할 때의 버블 정렬 예를 확인해보자 버블 정렬은 이웃한 두 요소 간 대소 관계를 파악하여 정렬하는 행위를 배열 전체에 한번 해주게 된다. 다음 두 요소 간 대소 관계 파악은 이전에 했던 대소 관계 비교 횟수보다 -1 만큼만 해줘도 된다는 특징이 있다. 위와 같이 오른쪽 끝에서 왼쪽 끝까지 이웃한 숫자끼리 대소 비교를 하며 정렬했다. 중요한 포인트는 이렇게 1회전이 끝난 버블 정렬의 맨 왼쪽 요소는 배열 중 최솟값으..

[안드로이드/android] jsoup을 이용해 웹 크롤링하기 (동행복권 당첨 숫자 가져오기)

Jsoup이란? 자바로 만들어진 HTML 파서. 즉, URL, 파일, 문자열을 소스로 하여 HTML을 파싱 할 수 있는 자바 라이브러리이다. jar 파일을 다운로드 받아 라이브러리에 직접 추가해도 되고, 아래와 같이 gradle에 추가해도 된다. implementation 'org.jsoup:jsoup:1.11.3' 인터넷을 통해 데이터를 가져올 것이기 때문에 Manifest 부분에 아래 퍼미션을 추가한다. 1. XML 정의 jsoup을 알게되었을 때 이론보다는 실습을 통해 먼저 공부했다. 이후 여러 블로그들을 다니면서 jsoup의 개념을 알게 되었지만 실습을 통해 알게 된 부분이 더 많았으므로 실습을 바로 해보겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ..

[안드로이드/android] 레이아웃과 속성

[안드로이드 스튜디오를 시작할 때 필요한 기본적인 개념을 정리하고자 포스팅합니다.] [Do it 안드로이드 앱 프로그래밍] 1. 뷰(view)의 속성 - 뷰(view)는 일반적으로 컨트롤이나 위젯으로 불리는 UI 구성 요소이다. 즉, 사용자의 눈에 보이는 화면의 요소들이다. - 이러한 뷰를 여러개 포함하고 있는 것이 뷰그룹(ViewGroup)이고 뷰그룹 안에서 뷰의 위치를 지정할 수 있다. - 뷰그룹은 뷰를 상속받으며 뷰를 상속받은 뷰그룹은 뷰와 같은 기능을 하므로 또 다른 뷰라고 부를 수 있다. - ex) 버튼은 텍스트뷰의 속성을 상속 받았으므로 텍스트뷰를 버튼으로 바꿔도 아무 문제가 없다\ 2. 위젯과 레이아웃 위젯 - 뷰 중에서 일반적인 컨트롤의 역할을 하는 것을 위젯이라고 부른다. (ex. But..

[안드로이드/android] 시작하기

[안드로이드 스튜디오를 시작할 때 필요한 기본적인 개념을 정리하고자 포스팅합니다.] [Do it 안드로이드 앱 프로그래밍] 1. Design / Blueprint Design(좌측) -코딩한 화면의 화면을 직관적으로 볼 수 있는 공간 Blueprint(우측) -화면 안의 요소가 서로 겹쳐 있을 때 요소를 투명하게 보고 작업할 수 있어 유용함. * 빨간색 원을 누르면 두 기능을 각각 또는 동시에 사용을 적용할 수 있음. 2. MainActivity.java onCreate() 함수 -표준 자바에서 main과 같은 기능을 수행하는 함수, 시작점 역할을 한다. -super이라는 키워드를 통해 onCreate()함수를 호출, 부모 클래스에 있는 onCreate() 함수를 호출하는 것. 직접적인 관련은 없으므로 ..