분류 전체보기
-
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [정렬 - 퀵 정렬] : http://dawoonjeong.com/algorithm-sort-quick/ 1. 퀵 정렬 퀵 정렬은 이름에서 부터 퀵이 들어간 빠른 정렬 알고리즘이다. 퀵 정렬은 전쟁 전략 중의 하나인 '분할 정복'에 기반한 알고리즘이다. 분할 정복 전략은 적군의 전체를 공략하는 대신, 전체를 구성하는 구성 요소들을 나누어 잘게 쪼개진 적을 공략하는 전법이다. (분할 정복에 대한 자세한 내용은 다른 게시물에서 다루겠다.) 퀵 정렬 예시 퀵 정렬은 다음과 같은 과정으로 분할 정복을 이용해 정렬을 수행한다. 데이터 집합 내에서 임의의 기준 요소를 선택하고, 기준 요소보다 작은 ..
[Algorithm] 퀵 정렬/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [정렬 - 퀵 정렬] : http://dawoonjeong.com/algorithm-sort-quick/ 1. 퀵 정렬 퀵 정렬은 이름에서 부터 퀵이 들어간 빠른 정렬 알고리즘이다. 퀵 정렬은 전쟁 전략 중의 하나인 '분할 정복'에 기반한 알고리즘이다. 분할 정복 전략은 적군의 전체를 공략하는 대신, 전체를 구성하는 구성 요소들을 나누어 잘게 쪼개진 적을 공략하는 전법이다. (분할 정복에 대한 자세한 내용은 다른 게시물에서 다루겠다.) 퀵 정렬 예시 퀵 정렬은 다음과 같은 과정으로 분할 정복을 이용해 정렬을 수행한다. 데이터 집합 내에서 임의의 기준 요소를 선택하고, 기준 요소보다 작은 ..
2021.09.04 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 1. 삽입 정렬 삽입 정렬은 데이터 집합을 순회하면서 정렬이 필요한 요소를 뽑아내어 이를 다시 적당한 곳에 삽입해 나가는 알고리즘이다. 예시로 뒤섞여 있는 트럼프 카드를 순서대로 정리하는 모습을 생각해보면 이해하기 쉽다. 카드를 한 장씩 뽑앙 카드의 값에 따라 적절한 곳에 끼워 넣는 것을 반복하다 보면 결국에는 모든 카드가 순서대로 정리되는 것 처럼, 데이터 집합에서 요소를 하나씩 뽑아 적절한 곳에 끼워 넣는 것을 반복하다 보면 정렬된 데이터 집합을 얻을 수 있다. 삽입 정렬 과정은 다음과 같다. (정렬 기준은 오름차순으로 가정한다.) 인덱스가 1인 값부터 정렬을 시작한다. 인덱스가 1인 값을 임시..
[Algorithm] 삽입 정렬/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 1. 삽입 정렬 삽입 정렬은 데이터 집합을 순회하면서 정렬이 필요한 요소를 뽑아내어 이를 다시 적당한 곳에 삽입해 나가는 알고리즘이다. 예시로 뒤섞여 있는 트럼프 카드를 순서대로 정리하는 모습을 생각해보면 이해하기 쉽다. 카드를 한 장씩 뽑앙 카드의 값에 따라 적절한 곳에 끼워 넣는 것을 반복하다 보면 결국에는 모든 카드가 순서대로 정리되는 것 처럼, 데이터 집합에서 요소를 하나씩 뽑아 적절한 곳에 끼워 넣는 것을 반복하다 보면 정렬된 데이터 집합을 얻을 수 있다. 삽입 정렬 과정은 다음과 같다. (정렬 기준은 오름차순으로 가정한다.) 인덱스가 1인 값부터 정렬을 시작한다. 인덱스가 1인 값을 임시..
2021.09.04 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - CS50 - 버블 정렬 / 선택 정렬] : https://www.boostcourse.org/cs112 이번에 공부할 내용은 데이터를 일련의 명령이나 반복되는 절차에 의해 정렬을 수행하는 정렬 알고리즘이다. 우리는 그중 버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬에 대해 알아보겠다. 각 알고리즘의 구조와 성능을 중점적으로 비교해가며 공부해보자. '왜 우리는 데이터들을 정렬해야될까?' 위 질문에 대한 답은 앞서 검색 알고리즘을 배우면서 알아보았다. 우리가 데이터를 정렬하는 이유는 정렬을 하면 데이터를 빠르게 찾을 수 있기 때문이다! 단, 데이터를 정렬하는 작업도..
[Algorithm] 버블 / 선택 정렬 알고리즘/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박성현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - CS50 - 버블 정렬 / 선택 정렬] : https://www.boostcourse.org/cs112 이번에 공부할 내용은 데이터를 일련의 명령이나 반복되는 절차에 의해 정렬을 수행하는 정렬 알고리즘이다. 우리는 그중 버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬에 대해 알아보겠다. 각 알고리즘의 구조와 성능을 중점적으로 비교해가며 공부해보자. '왜 우리는 데이터들을 정렬해야될까?' 위 질문에 대한 답은 앞서 검색 알고리즘을 배우면서 알아보았다. 우리가 데이터를 정렬하는 이유는 정렬을 하면 데이터를 빠르게 찾을 수 있기 때문이다! 단, 데이터를 정렬하는 작업도..
2021.09.03 -
/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박상현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - 모두를 위한 컴퓨터 과학(CS50) - 검색 알고리즘] : https://www.boostcourse.org/cs112 #검색(탐색) 알고리즘 오늘 배울 알고리즘은 고성능 데이터 탐색을 구현하는데 필요한 기초가 될 것이다. 이번에 다룰 알고리즘은 순차 탐색, 이진 탐색이다. 이들을 다 배운다면 우리는 주어진 배열 속에서 특정 값을 찾을 수 있다. 자, 순차 탐색에 대해 먼저 알아보자. 1. 순차 탐색 순차 탐색(선형 검색)은 데이터 집합의 처음부터 끝까지 차례대로 모든 요소를 비교해서 데이터를 찾는 탐색 알고리즘이다. 다시 말해, 선형검색은 원하는 원소가 발견될..
[Algorithm] 검색(탐색) 알고리즘/* 본 게시물은 ' 뇌를 자극하는 알고리즘 | with 박상현 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [BoostCourse - 모두를 위한 컴퓨터 과학(CS50) - 검색 알고리즘] : https://www.boostcourse.org/cs112 #검색(탐색) 알고리즘 오늘 배울 알고리즘은 고성능 데이터 탐색을 구현하는데 필요한 기초가 될 것이다. 이번에 다룰 알고리즘은 순차 탐색, 이진 탐색이다. 이들을 다 배운다면 우리는 주어진 배열 속에서 특정 값을 찾을 수 있다. 자, 순차 탐색에 대해 먼저 알아보자. 1. 순차 탐색 순차 탐색(선형 검색)은 데이터 집합의 처음부터 끝까지 차례대로 모든 요소를 비교해서 데이터를 찾는 탐색 알고리즘이다. 다시 말해, 선형검색은 원하는 원소가 발견될..
2021.08.27 -
참고 자료 [BoostCourse - 모두를 위한 컴퓨터 과학 (CS50 2019) - 알고리즘] : https://www.boostcourse.org/cs112 #Big-O 최근 들어 코드를 짜다보면 '조금 더 효율적(좀 더 빠르게)으로 만들 수 있지 않을까?' 라는 생각을 많이 한다. 그래서 조금 더 효율적인 코드들을 쓰는 방법에 대해 배우고자 한다. 간단한 CS 내용들부터 정리하고 차례차례 알고리즘에 대해 공부해 나가보자. 우리가 프로그램을 작성한 후에 실행하면 작업이 완료될 때 까지 어느정도 시간이 소요된다. 아주 간단한 프로그램인 경우에는 걱정할 필요가 없지만, 처리하는 데이터가 많아지고 처리하는 작업이 복잡해질수록 실행 시간은 매우 중요해진다. 특정 알고리즘을 작성하였을 때 그 실행 시간을 표..
[Algorithm] 시간 복잡도 - Big-O참고 자료 [BoostCourse - 모두를 위한 컴퓨터 과학 (CS50 2019) - 알고리즘] : https://www.boostcourse.org/cs112 #Big-O 최근 들어 코드를 짜다보면 '조금 더 효율적(좀 더 빠르게)으로 만들 수 있지 않을까?' 라는 생각을 많이 한다. 그래서 조금 더 효율적인 코드들을 쓰는 방법에 대해 배우고자 한다. 간단한 CS 내용들부터 정리하고 차례차례 알고리즘에 대해 공부해 나가보자. 우리가 프로그램을 작성한 후에 실행하면 작업이 완료될 때 까지 어느정도 시간이 소요된다. 아주 간단한 프로그램인 경우에는 걱정할 필요가 없지만, 처리하는 데이터가 많아지고 처리하는 작업이 복잡해질수록 실행 시간은 매우 중요해진다. 특정 알고리즘을 작성하였을 때 그 실행 시간을 표..
2021.08.25 -
/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [Android developer - Android 라이브러리 만들기] : https://developer.android.com/studio/projects/android-library?hl=ko [Multi Module로 Android project 구성하기] : https://leveloper.tistory.com/201 #모듈 1. 모듈이란? 모듈은 안드로이드 공식 사이트에 다음과 같이 정의되어 있다. 모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속 항목으로 사용할 수 있습니..
[Android] 모듈/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [Android developer - Android 라이브러리 만들기] : https://developer.android.com/studio/projects/android-library?hl=ko [Multi Module로 Android project 구성하기] : https://leveloper.tistory.com/201 #모듈 1. 모듈이란? 모듈은 안드로이드 공식 사이트에 다음과 같이 정의되어 있다. 모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속 항목으로 사용할 수 있습니..
2021.08.24 -
참고 자료 [Github - ComposeCookBook] : https://github.com/Gurupreet/ComposeCookBook #Kotlin DSL Github에서 JetPack ComposeBook 오픈소스를 분석하던 중, buildSrc를 통해 dependency를 관리하는 방법을 알게 되었다. 이 프로젝트에서는 많은 모듈로 이루어져 있는데 모듈의 build.gradle을 kotlin-dsl 을 사용하여 혁신(?)적으로 관리한다. (모듈이 많으면 gradle이 많아지는 단점이 있다.) 관련글 [우아한 형제들 기술 블로그Gradel Kotlin DSL 이야기 ] : https://techblog.woowahan.com/2625/ 위 글을 통해 kotlin-dsl 에 대해 알아보았다. 개..
[Android] kotlin - dsl 을 통한 Dependency 관리참고 자료 [Github - ComposeCookBook] : https://github.com/Gurupreet/ComposeCookBook #Kotlin DSL Github에서 JetPack ComposeBook 오픈소스를 분석하던 중, buildSrc를 통해 dependency를 관리하는 방법을 알게 되었다. 이 프로젝트에서는 많은 모듈로 이루어져 있는데 모듈의 build.gradle을 kotlin-dsl 을 사용하여 혁신(?)적으로 관리한다. (모듈이 많으면 gradle이 많아지는 단점이 있다.) 관련글 [우아한 형제들 기술 블로그Gradel Kotlin DSL 이야기 ] : https://techblog.woowahan.com/2625/ 위 글을 통해 kotlin-dsl 에 대해 알아보았다. 개..
2021.08.23 -
/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [URL] : https://gamtoggi.tistory.com/83 , https://gdtbgl93.tistory.com/63 발생 원인: 처음 remote repository를 만들 때 readme 파일을 포함시켰기 때문이다. remote 버전과 로컬의 버전이 달라서 충돌(Conflict)이 된 것이다. remote에 내가 받지 않은 파일의 변경사항이 있는데 그걸 무시하고 내 파일을 remote에 올리면 remote에 있는 변경사항이 없어지게 되므로 git에서 push로 내 파일을 올리지 못하게 막는다. 해결 방법 : 이를 해결하기 위해서는 remote repository의 파일을 local repository에 업데이트 ..
[Git] Git push Error (error: failed to push some refs to...) 해결하기/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [URL] : https://gamtoggi.tistory.com/83 , https://gdtbgl93.tistory.com/63 발생 원인: 처음 remote repository를 만들 때 readme 파일을 포함시켰기 때문이다. remote 버전과 로컬의 버전이 달라서 충돌(Conflict)이 된 것이다. remote에 내가 받지 않은 파일의 변경사항이 있는데 그걸 무시하고 내 파일을 remote에 올리면 remote에 있는 변경사항이 없어지게 되므로 git에서 push로 내 파일을 올리지 못하게 막는다. 해결 방법 : 이를 해결하기 위해서는 remote repository의 파일을 local repository에 업데이트 ..
2021.08.22 -
/* 본 게시물은 ' 오준석의 안드로이드 생존코딩 | with 오준석 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [Android - Room, LiveData, ViewModel로 Reactive 한 데이터 연동] : https://velog.io/@lsb156/Android-Room-LiveData-ViewModel%EB%A1%9C-Reactive%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%97%B0%EB%8F%99 [RecyclerView + MVVM + Room을 연습해보자!] : https://todaycode.tistory.com/34 #TodoList TodoList 앱 개발에는 RecyclerView, MVVM, Room 데이터베이스의 기초지식이 필요..
[Android] TodoList 앱 개발/* 본 게시물은 ' 오준석의 안드로이드 생존코딩 | with 오준석 ' 의 내용을 토대로 작성되었습니다. */ 참고 자료 [Android - Room, LiveData, ViewModel로 Reactive 한 데이터 연동] : https://velog.io/@lsb156/Android-Room-LiveData-ViewModel%EB%A1%9C-Reactive%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%97%B0%EB%8F%99 [RecyclerView + MVVM + Room을 연습해보자!] : https://todaycode.tistory.com/34 #TodoList TodoList 앱 개발에는 RecyclerView, MVVM, Room 데이터베이스의 기초지식이 필요..
2021.08.17 -
https://jsonformatter.curiousconcept.com/ JSON Formatter & Validator Format and validate JSON data so that it can easily be read by human beings. jsonformatter.curiousconcept.com
[유용한 사이트] Json 정렬 사이트https://jsonformatter.curiousconcept.com/ JSON Formatter & Validator Format and validate JSON data so that it can easily be read by human beings. jsonformatter.curiousconcept.com
2021.08.15 -
/* 본 게시물은 ' Do it 코틀린 프로그래밍 | with 황영덕 ' 의 내용을 토대로 작성되었습니다. */ #실드 클래스 / 열거 클래스 1. 실드 클래스 실드란 '봉인된'이라는 의미로 무언가 안전하게 보관하기 위해 묶어 두는 것을 뜻한다. 실드 클래스는 미리 만들어 놓은 자료형들을 묶어서 제공하기 때문에 어떤 의미에서는 열거형 클래스의 확장으로도 볼 수 있다. 실드 클래스는 sealed 키워드를 통해 선언할 수 있다. 실드 클래스 그 자체는 추상 클래스와 같기 때문에 객체를 만들 수 없다. (즉, 껍데기? 라고 생각하면 된다.) 또한 생성자도 기본적으로 private 이며 private이 아닌 생성자는 허용하지 않는다. 실드 클래스는 같은 파일 안에서는 상속이 가능하지만, 다른 파일에서는 상속이 ..
[Kotlin] 실드 클래스 / 열거형 클래스/* 본 게시물은 ' Do it 코틀린 프로그래밍 | with 황영덕 ' 의 내용을 토대로 작성되었습니다. */ #실드 클래스 / 열거 클래스 1. 실드 클래스 실드란 '봉인된'이라는 의미로 무언가 안전하게 보관하기 위해 묶어 두는 것을 뜻한다. 실드 클래스는 미리 만들어 놓은 자료형들을 묶어서 제공하기 때문에 어떤 의미에서는 열거형 클래스의 확장으로도 볼 수 있다. 실드 클래스는 sealed 키워드를 통해 선언할 수 있다. 실드 클래스 그 자체는 추상 클래스와 같기 때문에 객체를 만들 수 없다. (즉, 껍데기? 라고 생각하면 된다.) 또한 생성자도 기본적으로 private 이며 private이 아닌 생성자는 허용하지 않는다. 실드 클래스는 같은 파일 안에서는 상속이 가능하지만, 다른 파일에서는 상속이 ..
2021.08.14 -
/* 본 게시물은 ' Do it 코틀린 프로그래밍 | with 황영덕 ' 의 내용을 토대로 작성되었습니다. */ #내부 클래스 기법 코틀린은 2가지의 내부 클래스 기법이 있다. 첫 번째는 중첩 클래스, 또 다른 하나는 이너 클래스이다. 중첩 클래스와 이너 클래스는 둘다 특정 클래스 내부에 있는 것이지만 사용 방법이 약간 다르다. 그럼 왜 클래스 내부에 또 다른 클래스를 설계하여 둘까? 그 이유는 독립적인 클래스로 정의하기 모호한 경우나 다른 클래스에서는 잘 사용하지 않는 내부에서만 사용하고 외부에서는 접근할 필요가 없기 때문이다. 1. 중첩 클래스 코틀린에서 중첩 클래스는 기본적으로 정적(static) 클래스처럼 다뤄진다. 즉, 중첩 클래스는 객체 생성 없이 접근할 수 있다. 중첩 클래스를 사용해보자. ..
[Kotlin] 내부 클래스/* 본 게시물은 ' Do it 코틀린 프로그래밍 | with 황영덕 ' 의 내용을 토대로 작성되었습니다. */ #내부 클래스 기법 코틀린은 2가지의 내부 클래스 기법이 있다. 첫 번째는 중첩 클래스, 또 다른 하나는 이너 클래스이다. 중첩 클래스와 이너 클래스는 둘다 특정 클래스 내부에 있는 것이지만 사용 방법이 약간 다르다. 그럼 왜 클래스 내부에 또 다른 클래스를 설계하여 둘까? 그 이유는 독립적인 클래스로 정의하기 모호한 경우나 다른 클래스에서는 잘 사용하지 않는 내부에서만 사용하고 외부에서는 접근할 필요가 없기 때문이다. 1. 중첩 클래스 코틀린에서 중첩 클래스는 기본적으로 정적(static) 클래스처럼 다뤄진다. 즉, 중첩 클래스는 객체 생성 없이 접근할 수 있다. 중첩 클래스를 사용해보자. ..
2021.08.14