분류 전체보기 103

재귀 알고리즘 예시 (+피보나치 분할정복 방법)

재귀(Recursion) 어떤 함수(혹은 프로시져, 서브 프로그램)에서 직접적으로 혹은 간접적으로 자기 자신 함수를 다시 호출하는 것. 무한 재귀에 빠지지 않도록 base case를 잘 정해주고, 반복되는 부분은 recursive step로 정의해준다. Function call stack 프로그램 중 함수를 호출하면 (Context switching) 지금 실행중인 함수의 지역변수 등 가지고 있는 정보를 저장해두어야 한다. 그리고 새로운 함수 수행이 완료되면 다시 원래의 함수로 제어가 돌어오고, 기존의 정보를 복원해서 사용하여야 한다. 이때 현재 함수가 가지고 있던 정보를 저장하는 연속적인 메모리 공간을 activation record라고 하고, 이 activation record를 call stack ..

자료구조 2023.10.18

정렬 알고리즘

stable sorting algorithm 크기가 같은 데이터가 정렬 이후에도 입력된 순서 그대로 유지되는 알고리즘 ex) Merge sort, Insertion Sort, Bubble Sort, Cocktail Shaker Sort In-Place algorithm 입력 데이터를 저장하는 메모리 이외는 상수 크기의 메모리만 필요한 알고리즘 ex) Heap sort, Insertion sort, Selection sort, Shell sort, Bubble sort, Comb Sort, Cocktail shaker sort Bubble sort 인접한 두 숫자를 비교하여 두 수의 정렬순서가 맞지 않는 경우에는 교환(swap)한다. (stable, in-place) public static void bu..

자료구조 2023.10.17

[스터디] 헤드퍼스트 디자인 패턴 - 1. Strategy pattern

학교에서 소프트웨어 디자인패턴 수업을 듣게되었는데 부교재로 이 책을 사게되었다. 난 몰랐는데 디자인패턴쪽에서는 유명한 책이라고 한다! 학교에서 진도나가는 주교재는 영어 원서여서 이건 스터디하는데에 사용하기로.. 아무튼 유난님과 매주 한챕터씩 읽고 주 1회씩 줌으로 스터디를 하기로 했다! 대학생도 힘든 스터디를 회사 다니면서 하는... 아무튼 정말 대단하네요.... 히튼 그래서 사실 첫 스터디는 저번주에 했는데 정리하는걸 깜빡했어!!! 지금이라도 하도록 하겠어요 전략패턴 (Strategy Pattern) 알고리즘군을 캡슐화해서 각각의 알고리즘들을 수정해서 쓸 수 있게 하는 패턴. 클라이언트로부터 알고리즘을 분리해서 독립적으로 쓸 수 있게 하는 패턴. 배운 것 변화하는 부분은 뽑아서 캡슐화하자! 구현보다는 ..

[Thanks] 플러터 앱 출시 후기

평소에 플러터를 한번 배워보고싶다 생각만 하다가 이번 방학에 한번 공부해봤다. 그런데 배우다보니까 이게 생각보다 너무 재밌고 좋아서 개인적으로 만든 앱을 출시까지 해보게 되었다. 땡스는 하루의 감사한일을 적고 월별로 조회할 수 있는 아주 간단한 앱이고, 플러터로 개발했기 때문에 애플 앱스토어와 구글 플레이스토어 양쪽에 모두 올릴 수 있었다..! 다운로드는 아래 링크에서 가능하다! https://apps.apple.com/kr/app/%EB%95%A1%EC%8A%A4/id6458731401 ‎땡스 ‎* 주요 기능 안내 * 1. 홈 - 캘린더를 통해 날짜를 선택하고 우측 하단의 +버튼을 통해 오늘의 감사한 일을 기록할 수 있어요. - 생성된 감사카드를 클릭하면 수정과 삭제가 가능해요! 2. 모아보 apps...

개인 프로젝트 2023.08.16

Stateful, Stateless Widget LifeCycle

Widget widget은 모두 불변의 법칙을 갖고 있다. 위젯의 색 등 그 값을 변경해야 할때는 기존 위젯을 삭제해버리고 완전히 새로운 위젯으로 대체한다! StatelessWidget 라이프 사이클 class Test extends StatelessWidget { const Test({super.key}); @override Widget build(BuildContext context) { return const Placeholder(); } } StatelessWidget은 Constructor로 생성이 되고, 생성이 되자마자 build함수가 실행된다. 변경이 필요하면 새로운 위젯을 만들어버리고, 하나의 StatelessWidget은 라이프사이클동안 단 한번만 build함수를 실행한다. Statefu..

Flutter 2023.08.16

flutter android배포시 build에러 : Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.10

기존 앱부분의 코드에서는 오류가 없었는데 안드로이드로 빌드하려고 하면 뜬금 오류가 난다. 기본 생성되는 프로젝트 코드에서 문제가 생긴것 같다. 우선 app/build.gradle에서 deprecated된것으로 보이는 GradleException을 FileNotFoundException으로 바꿔준다. (사진은 오류난것처럼 보이는데 안드로이드 스튜디오로 열면 문제가 없다. ide상의 문제인듯싶다.) 그리고 아래부분을 dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } 아래처럼 정확한 버전으로 수정해준다. dependencies { implementation(platform("org.jetbrains...

Flutter 2023.08.08

flutter datepicker 선택날짜 초기화 이슈 해결

flutter로 로컬스토리지를 사용하는 앱을 개발하며 datepicker 오픈 패키지를 커스텀해서 사용하는 과정에서 문제가 있었다. https://github.com/sivaprasadnk/SimpleMonthYearPicker GitHub - sivaprasadnk/SimpleMonthYearPicker Contribute to sivaprasadnk/SimpleMonthYearPicker development by creating an account on GitHub. github.com 기존의 CupertinoDatePicker는 일을 없애고 년과 월 옵션만 넣도록 커스텀이 안돼서 위의 오픈소스 패키지를 사용하게 되었다. 내가 구현하고자 한 기능은 datepicker를 통해 원하는 날짜를 선택하면 ..

Flutter 2023.08.03

OOAD(Object Oriented Analysis and Design) (1)

*국민대학교 소프트웨어학부 최은미 교수님의 객체지향 분석 및 설계(OOAD) 교과목을 공부하며 정리한 내용입니다. 약 420page정도 되는 내용을 최대한 요약해서 pdf 26페이지로 정리했고, 영어로 된 자료를 한글로 최대한 쉽게 정리했습니다! 절대 완벽한 자료는 아니지만, 수업을 듣고 공부할 때 참고하신다면 훨씬 편하게 내용을 파악하실 수 있을거라고 생각합니다! 해당 포스팅에서 정리하는 내용의 목차는 아래와 같습니다. 1. OOAD introduction 2. OOAD example 3. Iterative and Evolutionary process 4. SW development process 5. UP phases Example 6. Inception Phase 7. Quality & Qualit..