안녕하세요 Pingu입니다.🐧 지난 글에서는 Builder Pattern에 대해 알아봤는데요, 이번 글에서는 또 다른 Creational Pattern 중 하나인 Factory Method Pattern(팩토리 메서드)에 대해 알아보도록 하겠습니다. 팩토리 메서드 패턴이란? 객체를 만들기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 하위 클래스가 정하도록 하는 방법입니다. 간단하게 말해서 객체 생성을 서브 클래스가 하도록 처리하는 패턴입니다. 즉 객체 생성을 캡슐화할 수 있으며 이로 인해 부모 클래스는 자식 클래스가 어떤 객체를 생성하는지 몰라도 됩니다. 팩토리 메서드 패턴은 위와 같은 구조를 갖습니다. Product Creator와 하위 클래스가 생성할 수 있는 모든 ..
안녕하세요 Pingu입니다.🐧 지난 글에서는 Abstract Factory 패턴에 대해 알아봤었는데요, 이번 글에서는 또 다른 Creational Pattern인 Builder Pattern에 대해 알아보려고 합니다. 빌더 패턴이란? 복잡하게 생성되어야 할 객체를 구현할 때 구성을 분리하여 다른 표현으로 만들 수 있게 하는 패턴입니다. 여기서 표현이라고 하니 좀 와 닿지 않는데요, 간단하게 동일한 역할을 하는 다른 코드로 만들 수 있다고 볼 수 있습니다. 즉 어떤 객체를 생성자로 만들 때 한 번에 모두 만들 수도 있지만 객체가 가지는 요소가 많다면 여러 단계로 나누어 객체를 만들 수 있게 하는 패턴입니다. 빌더 패턴은 위의 그림과 같이 3가지 요소로 나눌 수 있어요. Director input을 받고 b..
안녕하세요 Pingu입니다.🐧 오늘부터 객체 지향 소프트웨어를 개발을 할 때 발생하는 문제의 해결방법을 생각할 때 다양한 방법을 떠올릴 수 있도록 디자인 패턴을 공부하려고 합니다. 공부에 참고할 책은 1994년에 쓰인 Design Patterns: Elements of Reusable Object-Oriented Software 라는 책과 Raywenderlich 사이트의 Design Patterns by Tutorials라는 책입니다. 전자는 거의 30년 전에 나온 책인데, 책에 있는 디자인 패턴들이 아직까지도 쓰인다니 정말 대단한 거 같아요. 공부 방법은 책으로 개념을 공부한 뒤, 다양한 디자인 패턴을 Swift예제로 구현해 볼 계획입니다! 그럼 이번 글에서는 디자인 패턴이 뭔지, 어떠한 디자인 패턴..
안녕하세요 Pingu입니다.🐧 오늘은 Object Oriented Programming, OOP라고 불리는 객체 지향의 기본 개념에 대해서 알아보려고 합니다. 위키피디아의 객체 지향의 특징에는 크게 8가지가 존재합니다. 비 객체지향 언어의 개념을 포함 객체와 클래스 클래스 기반 vs 프로토타입 기반 동적 Dispatch, Message Passing 캡슐화 상속, 델리게이션 다형성 재귀 이번 글에서는 1~4까지를 정리하고 다음 글에서 5~8까지 정리할 계획이며 글에서 사용되는 예제의 언어는 Swift를 사용합니다. 객체지향 프로그래밍이란? 그럼 일단 객체지향 프로그래밍이 뭔지에 대해서 알아보겠습니다. 초기 프로그래밍은 절차 지향 프로그래밍이었습니다. 즉 어떠한 문제를 해결하는 순서대로 프로그래밍을 해야 ..
문제 링크 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여 넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다. 모든 연산은 1초가 걸린다. 또, 클립보드에 이모티콘을 복사하면 이전에 클립보드에 있..
문제 링크 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 문제 BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다. 오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다. A는 B와 친구다. B는 C와 친구다. C는 D와 친구다. D는 E와 친구다. 위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다. 둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b..
안녕하세요 Pingu 입니다.🐧 Swift에는 Deque 자료구조가 따로 없어서 직접 만들어야합니다.😂 참고로 Deque는 앞뒤로 모두 삽입, 삭제가 가능한 자료구조입니다. 매번 만드는게 귀찮아서 이렇게 따로 글을 남기려고합니다. Deque를 만드는 방법에는 다양한 방법이 있지만 이번 글에서는 간단하게 배열 2개로 만든 Deque를 만들었어요. Swift에서는 배열을 뒤집는 reversed() 메서드의 시간복잡도가 O(1) 이므로 Deque와 같은 성능을 낼 수 있다고 봅니다. Deque의 가장 기본적인 기능들만 구현했습니다. 감사합니다. // Made by Pingu class Deque { var enqueue: [T] var dequeue: [T] = [] var count: Int { return..
안녕하세요 Pingu 입니다.🐧 Swift에는 Queue 자료구조가 따로 없어서 직접 만들어야합니다.😂 참고로 Queue는 FIFO(First In First Out)의 구조를 갖는 자료구조입니다. 매번 만드는게 귀찮아서 이렇게 따로 글을 남기려고합니다. Queue를 만드는 방법에는 다양한 방법이 있지만 이번 글에서는 간단하게 배열 2개로 만든 Queue를 만들었어요. Swift에서는 배열을 뒤집는 reversed() 메서드의 시간복잡도가 O(1) 이므로 Queue와 같은 성능을 낼 수 있다고 봅니다. Queue의 가장 기본적인 기능들만 구현했습니다. 감사합니다. // Mady By Pingu class Queue { var enqueue: [T] var dequeue: [T] = [] var count..
- Total
- Today
- Yesterday
- 스위프트
- System
- 문법
- 앱개발
- 코딩테스트
- operating
- mac
- Combine
- OSTEP
- pattern
- 알고리즘
- OS
- 테이블뷰
- DP
- BFS
- 코테
- 프로그래밍
- dfs
- 백준
- operator
- Xcode
- 자료구조
- 아이폰
- design
- IOS
- Publisher
- 동시성
- document
- Apple
- Swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |