Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 프로토타입 패턴에 대해서 알아보겠습니다. 이 패턴은 어떤 클래스의 인스턴스를 만드는 것이 자원/시간을 많이 필요하거나 복잡한 경우 프로토타입 패턴을 사용하면 됩니다. 프로토타입 패턴이란? 프로토타입 패턴을 활용해서 기존 인스턴스를 복사하기만 하면 새로운 인스턴스를 만들 수 있습니다. 자바에서는 clone() 메소드나 역직렬화로 할 수 있습니다. 복사하였기에 클라이언트 코드에서 어떤 클래스의 인스턴스를 만드는지 전혀 모르는 상태에서 새로운 인스턴스를 만들 수 있습니다. 장점 클라이언트에서는 새로운 인스턴스를 만드는 복잡한 과정을 알 수 없어도 됩니다. 단점 때때로 객체의 ..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 메멘토 패턴에 대해서 알아보겠습니다. 객체를 이전 상태로 복구시켜야 하는 경우 메멘토 패턴을 활용하면 됩니다. 게임 좋아하시나요? 게임 같은 경우가 메멘토 패턴을 많이 사용할텐데요. 예를들어 게임을 어느정도 진행하다가 세이브 기능을 진행해야할 때 메멘토패턴을 사용하면 됩니다. 메멘토 패턴 이란? 단일 역할 원칙(single reponsibility principle) 의 원칙을 지키면서 메멘토 패턴을 바라본다면, 저장하고자 하는 상태와 핵심 객체를 분리하여야 합니다. 여기서 상태를 따로 저장하는 역할을 맡은 객체를 메멘토 객체라고 부릅니다. 장점 저장된 상태를 핵심 객체..
* Head First - Design Patterns 의 데코레이터 패턴을 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 다양한 디자인패턴이 존재합니다. 디자인패턴은 누군가가 나의 문제를 이미 해결해 놓았고, 이미 경험한 개발자들의 경험이 모여 디자인패턴을 만들어 졌습니다. 디자인 패턴은 코드를 재사용하는 것과 마찬가지로 경험을 재사용하는 것입니다. 데코레이션 패턴을 소개하기 앞써 OCP(Open-Close Principle) 에 대해서 언급하겠습니다. OCP(Open-Closed Principle)는 가장 중요한 디자인 원칙 가운데 하나입니다. "클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다." 데코레이터 패턴 데코레이터 패턴(Decorator Pa..
정렬 알고리즘은 다양하게 존재합니다. 대표적은 정렬 알고리즘인 합병정렬은 분할정복법를 사용하는 Sort 알고리즘입니다. 분할정복법은 분할, 정복, 합병으로 나눠 작업 합니다. 분할 : 해결하고자 하는 문제를 작은 크기의 동일한 문제들로 분할 정복 : 각각의 작은 문제를 순환적으로 해결 합병 : 작은 문제의 해를 합하여(merge) 원래 문제를 대한 해를 구함 Merge sort는 두 배열을 합병정렬하는 방법입니다. 그림을 참고하시면 좀 더 이해하기 편하실 것입니다. 수도코드 mergeSort(A[], p, r) //A[p ... r] 을 정렬한다 { if (p < r) then { q
정렬 알고리즘 중 Bubble, Insertion, Selection Sort 의 개념 및 코드로 어떻게 표현하는지 공유드립니다. Bubble sort Bubble Sort은 두 인접한 원소를 검사하여 정렬하는 방법입니다. 냇가에서 물고기 잡을 때 물고기 몰이 하는 것처럼 앞에서부터 마지막 항목까지 인접한 두 항목을 비교해서 정렬하는 방법입니다. 수도코드 bubbleSort(A[], n) 배열 A[1..n] 을 정렬한다. { for last
Recursion으로 먹집합을 구성해보겠습니다.멱집합이란? 모든 부분 집합을 모은 집합을 의미합니다. 멱집합 A가 존재한다고 할 때 A을 나타내는 기호는 P(A) 나 이다. 예를 들어, { A={1,2}} A = {1, 2} 의 멱집합은 P(A) = {공집합, {1}, {2}, {1,2}} 이다. 멱집합의 특징을 고려해서 다음과 같이 규칙을 만들 수 있습니다. 규칙 1. 부분집함을 구성 시 부분집합의 각 요소는 포함 하는 경우와 포함하지 않는 경우로 나눈다. 규칙 2. 공집합도 집합으로 구분되며, P(A)는 2^A이다. 규칙 1을 그래프로 표시하면 다음과 같이 표시할 수 있습니다. 가장 상단부터 해서 왼쪽은 포함되지 않는 것, 오른쪽은 포함된 것으로나눠서 표시한 그래프입니다. 각 원소의 포함 여부를 저장..
미로찾기(Decision Problem)Decision Problem 답이 yes or no 인 문제 미로 찾기에 대해서 알아보겠습니다. 현재 위치에서 출구까지 가는 경우는 2가지로 나눠집니다. 1) 현재 위치가 출구 2) 이웃한 셀들 중 하나에서 현재 위치를 지나지 않고 출구까지 경로이것을 수도 코드로 표현하면 다음과 같습니다. 수도코드boolean findPath(x,y) if (x,y) is either on the wall or a visited cell //1) return false; else if (x,y) is the exit // 2) return true; else mark (x,y) as a visited cell; // 3) for each neighbouring cell(x',y'..
요즘 프로그래머로 직장을 갖기 원하는 대부분의 대학생들과 취준생들을 만나면 '알고리즘 스터디'를 한다고 하였습니다. 왜 그들은 '알고리즘'을 공부하는 걸까요? 최근 카카오, 라인같은 대형 IT 기업들의 SW 역량 평가라는 이유로 면접 유형 중 '코딩테스트'가 생겨났습니다. SW 역량평가는 대부분 알고리즘 문제로 구성되어있어 '알고리즘' 문제풀이를 하고있는 것으로 예상됩니다. 그렇다면 '컴퓨터 공학과가 아니었던 취준생들은 어떻게 알고리즘 공부를 할 것인가? 만약 대학교에서 알고리즘을 배웠다고 가정한다면 수업내용만으로 코딩 시험을 합격할 수 있을까?' 이 두 가지의문이 들었습니다. 저는 이 궁금증을 해결하기 위해 취업 준비생 및 이직 준비 하시는 분들과 웹 검색을 통해서 잘 알려진 알고리즘 사이트 3곳을 소..
- 코틀린
- 임용고시
- 디자인패턴
- 고시문헬퍼
- 고시문
- Android
- 스코어헬퍼
- missionchina
- swift
- DI
- flutter
- push
- java
- 점수판
- IT
- 안드로이드
- Kotlin
- issue
- 패턴
- 알고리즘
- IOS
- 탁구
- MCC
- view
- 미션차이나센터
- Android Studio
- RXjava
- 선교
- missioon
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |